React,componentDidUpdate触发第二个动作,陷入循环

时间:2015-12-29 17:41:50

标签: javascript reactjs

我正在尝试检查某些道具是否发生了变化,如果是这样,那么就开始行动了,但是现在我被困在它上面,因为看起来状态似乎没有更新。我不确定我是否正试图利用错误的生命周期事件或采取错误的方法,但这是我到目前为止所做的。

 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捕获此更新并触发第二个操作。任何有关如何处理此问题的建议都将非常感激。谢谢!

1 个答案:

答案 0 :(得分:1)

尝试componentWillReceiveProps。

componentWillReceiveProps = (nextProps) => {
  if(this.props.activeFilters != nextProps.activeFilters ) 
    //active filters have changed, fire search
    this.props.goToSearchResults("", this.props.activeFilters);
  }
}