React - 将数组推送到状态

时间:2016-07-25 13:26:26

标签: arrays reactjs state

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])
    });

显然,它根本没有帮助。你能告诉我这件事吗? 这将是非常感谢,

干杯!!

2 个答案:

答案 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)