javascript - React,componentDidUpdate 触发第二个操作,陷入循环

标签 javascript reactjs

我正在尝试检查某些 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/

相关文章:

javascript - 在 Javascript 中添加一个带有空格的数组字段

javascript - ReactTestUtils.Simulate.click 测试上的 Jasmine spyOn 失败

javascript - 使用带有 kineticJs 的 jquery 可拖动 UI 使元素对齐网格?

javascript - 使用 JavaScript 将数组的值交织在一起

reactjs - 将 React 组件序列化到数据库

javascript - 如何使用至少匹配一个的字符串数组来过滤数据?

javascript - 如何在react中编写多重导出?

javascript - React Native - 如何将组件用作 JavaScript 对象?

javascript - 最好的 jQuery 时钟拾取插件是什么?

javascript - 如何从表中获取所有值