【发布时间】:2017-12-27 13:44:44
【问题描述】:
我有一个从 api 获取数据的场景。在这种情况下,每当我从商店获得新值时,都会触发我的 componentWillReceiveProps()。
componentWillReceiveProps(newProps){
if(newProps.listOne){
this.state.listOne = newProps.listOne;
}
if(newProps.listTwo){
this.state.listTwo = newProps.listTwo;
}
this.setState(this.state);
}
现在根据 react doc,使用 this.setState(this.state); 是不合适的;
因此请记住,更新状态的方式是
componentWillReceiveProps(newProps){
if(newProps.listOne){
this.setState({listOne : newProps.listOne});
}
if(newProps.listTwo){
this.setState({listTwo : newProps.listTwo});
}
}
在案例 1 中,在我将所有数据复制到 state 后,我的 Render 只会触发一次。 在案例 2 中,我的渲染(和所有中间生命周期)被触发,每次我的 If 条件得到满足。
所以我不明白它如何提高我的表现。假设我们谈论的不是一个,而是很多状态的条件更新。
【问题讨论】:
-
请对您收到的答案进行反馈;无论是“这不能解决我的问题”还是将其标记为已接受。
标签: javascript reactjs