我正在使用ReactJS,这让我疯狂。
我正在尝试更新来自状态
的对象var state = this.state;
sku = data['sku'];
console.log(sku) //prints sku/06
console.log(state.sku) //prints sku/06
state.sku = sku;
console.log(state.sku) //prints sku/10
我已经查过了,而且只有一个电话正在进行中。虽然我使用flux来更新商店,但这个归因是在将动作发送给调度员之前进行的。
这有什么问题?
答案 0 :(得分:5)
您是否尝试使用React' setState
函数更新状态?
var sku = data['sku'];
this.setState({sku: sku});
直接从React docs https://facebook.github.io/react/docs/component-api.html
复制不要直接改变this.state,因为之后调用setState()可能会替换你所做的突变。把this.state看作是不可变的。
setState()不会立即改变this.state,但会创建挂起状态转换。在调用此方法后访问this.state可能会返回现有值。
无法保证对setState的调用同步操作,并且可以对调用进行批处理以提高性能。 除非在shouldComponentUpdate()中实现条件呈现逻辑,否则setState()将始终触发重新呈现。如果正在使用可变对象且无法在shouldComponentUpdate()中实现逻辑,则仅当新状态与先前状态不同时调用setState()将避免不必要的重新渲染。