我正在尝试检查某些 Prop 是否发生了变化,如果是,则触发一个 Action ,但是现在我陷入了它自身的循环,因为状态似乎没有更新。我不确定我是否试图利用错误的生命周期事件或采取错误的方法,但这是迄今为止我所拥有的。
componentDidUpdate: function(prevProps, prevState) {
if(this.props.activeFilters != prevProps.activeFilters ) {
//active filters have changed, fire search
this.props.goToSearchResults("", this.props.activeFilters);
}
},
它没有更新 prevprops,我想知道是否有办法让它触发一次。我尝试添加一行:
prevProps.activeFilters = this.props.activeFilters;
在 if 语句内,但它给了我 Uncaught TypeError: Cannot assign to read only property 'activeFilters' of #<Object>
的错误这是有道理的。
基本的想法是,如果这些 Prop 发生变化,我想触发这个事件。我的假设是,当它在 if 内触发 goToSearchResults 时,prevProps 将更新为最新的,并且只会触发一次。
我正在寻找的是第一个操作==>更新事件过滤器==>监听器捕获此更新并触发第二个操作。任何有关如何解决此问题的建议将不胜感激。谢谢!
最佳答案
尝试 componentWillReceiveProps。
componentWillReceiveProps = (nextProps) => {
if(this.props.activeFilters != nextProps.activeFilters )
//active filters have changed, fire search
this.props.goToSearchResults("", this.props.activeFilters);
}
}
关于javascript - React,componentDidUpdate 触发第二个操作,陷入循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34516142/