如果我有一个反应组件会弹出一个“你确定”确认模式,如果状态是脏的,那么标记脏的最方便的方法是什么?我有一个基本的本地数组状态的对象,可以更改其值,并删除/添加项目。现在我在valuesChanged(),addItem(),deleteItem(),toggleSwitch()等中有一个setState({dirty:true})。我知道有一个不那么冗余的方法来完成这个,也许比较一个组件中的状态生命周期。我只是不确定该怎么做。
答案 0 :(得分:0)
@justin,您可以使用/L
生命周期方法:
componentWillReceiveProps
参考:https://reactjs.org/docs/state-and-lifecycle.html#adding-lifecycle-methods-to-a-class
答案 1 :(得分:0)
React 17.0将删除componentWillReceiveProps
生命周期钩子(以及其他几个)并将在React 16.3中开始弃用过程。有关更多信息,请参阅this github issue。还有博客文章。
所以说,你可以做这样的事情:
componentDidUpdate(prevProps, prevState) {
//add whatever comparison logic you need here
if(this.state.someValue !== prevState.someValue && !this.state.dirty) {
this.setState({ dirty: true });
}
//optionally you could also reset dirty here if you also
//persisted the original values and the user undid their
//changes
}