如何避免改变this.state或redux对象

时间:2017-03-31 05:04:53

标签: javascript reactjs redux

例如,如果我想对this.state或某个其他对象(例如Object.keys(this.state).map())执行任何操作,则可以访问对象中的所有值。

这样做不好吗?

Object.keys(this.state).map(k => this.state[k]);

由于

2 个答案:

答案 0 :(得分:2)

在React中,您应该只使用this.state变异this.setState(),以便React知道何时重新渲染组件。

您编写的代码行很好,因为您实际上并未修改状态对象。您已使用Object.keys创建了新数组。

但是,如果您要复制this.state而不修改它,请尝试以下操作。

const state = {...this.state};

// Or 

const state = Object.assign({}, this.state);

答案 1 :(得分:0)

React Mutating State。

let state = {
    age    : 25,
    name   : 'Robin',
    friends: ['Barney', 'Ted']
}

更改年龄

this.setState({age: 26}) 

更改名称

this.setState({name: 'Lily'}) 

添加好友

this.setState({ 
    friends: this.state.friends.concat(['Marshall'])
})

尝试使用此库immutability-helper进行复杂的状态更新。