为什么键值对被添加两次到状态?
我有以下功能:为什么键值对被添加两次到状态?
handleAddItem(s) { var key = Object.keys(s)[0];
var value = s[key];
var allItems = {...this.state.items};
allItems[key] = allItems[key];
allItems[key].push({name: value});
var ourItems = {};
ourItems = allItems[key];
ourItems.push({name: value });
this.setState({items: allItems});
}
我意识到ourItems是不是真的想在做什么,但为什么当加入被添加的键值对那些三线两次,状态呢?
回答:
JavaScript中只有原语通过值传递。其他一切都通过参考传递。 通过设置ourItems = allItems[key]
,可以将ourItems
变量指向allItems[key]
阵列。它不会复制数组。因为你实际上将对象两次推入同一个数组中。
以上是 为什么键值对被添加两次到状态? 的全部内容, 来源链接: utcz.com/qa/258642.html