在一个组件中,我有:
constructor() {
super();
this.state = {
lists: [],
items: {}
};
}
handleAddList(s) {
var temp= this.state.lists.slice(0,this.state.lists.length);
temp.push(s);
this.setState({lists: temp},function(){
var toAdd={};
toAdd[s]=[];
如何将toAdd
添加到this.state.items
?
更新,
我想我得到了它与以下工作:
var ourLists = this.states.items;
ourlists[s] = [];
and then just setState.
我在理解两行代码的基本语法时遇到了麻烦:
toAdd[s] = []; // is this just the way you specify a key value pair where the value is an array?
1条答案
按热度按时间dhxwm5r41#
我为你创建了一个简单的codepen。一般来说,如果你想在你的状态下给一个对象添加新的值,你不能同时做这两件事,首先你需要创建一个键,然后给予它一个值。(这是老办法):
现在你可以使用
Object.assign()
,它将帮助你添加一个新的属性到一个对象,同时保持秩序。我的意思是:请确保保持顺序,否则旧值将覆盖新值!!!.
完成之后,您可以将新状态的值设置为您创建的新对象。