我正在尝试检查某些道具是否发生了变化,如果是这样,那么就开始行动了,但是现在我被困在它上面,因为看起来状态似乎没有更新。我不确定我是否正试图利用错误的生命周期事件或采取错误的方法,但这是我到目前为止所做的。
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>
的错误,这是有道理的。
基本的想法是,如果那些道具改变了我想发动这个事件。我假设的是,当它触发if中的goToSearchResults时,prevProps将更新为最新的,这只会触发一次。
我正在寻找的是 First Action ==&gt;更新有效过滤器==&gt; listener捕获此更新并触发第二个操作。任何有关如何处理此问题的建议都将非常感激。谢谢!
答案 0 :(得分:1)
尝试componentWillReceiveProps。
componentWillReceiveProps = (nextProps) => {
if(this.props.activeFilters != nextProps.activeFilters )
//active filters have changed, fire search
this.props.goToSearchResults("", this.props.activeFilters);
}
}