getInitialState: function() {
p:{'Keeper' : [] , 'Defenders': [] , 'Midfield' : [], 'Forwards' : []}}
}
onUpdatePlayers : function (newState) {
var pos;
if (newState.position.includes('Back')) {
pos = 'Defenders'
} else if (newState.position.includes('Midfield')){
pos = 'Midfield'
} else if (newState.position.includes('Forward')) {
pos = 'Forwards'
} else {
pos = newState.position;
}
this.state.p[pos].push(newState)
}
基本上,我想将一些数组推入多个状态的属性。 不知何故,我需要更改此代码" this.state.p [pos] .push(newState)"使用 this.setState 。我已经google了,发现了类似
的内容 this.setState({
p : this.state.p[pos].concat([newState])
});
显然,它根本没有帮助。你能告诉我这件事吗? 这将是非常感谢,
干杯!!
答案 0 :(得分:0)
如果你确实需要深度嵌套你的状态,你需要用新对象替换整个p
属性。例如,使用Object.assign
this.setState({
p: Object.assign(this.state.p, {
[pos]: this.state.p[pos].concat(newState)
})
})
答案 1 :(得分:0)
Danny Kim,您缺少要添加的新密钥的引号。将最后一行更改为
this.state.p['pos'].push(newState)