82

我目前正在尝试概念化如何根据在另一个组件中调度后的数据更改来处理在组件中调度一个动作。

采取这种情况:

dispatch(someAjax)-> 状态更新中的属性。

在此之后,我需要依赖于这个相同属性的另一个组件来知道它已经更新并根据新值调度一个动作。

而不是使用某种类型的value.on(change...解决方案,处理这种“级联”动作的首选方法是什么?

4

2 回答 2

105

你可以使用 ReduxmapStateToPropsconnectReact 的componentDidUpdate(prevProps, prevState, snapshot)hook。

所以基本上你的代码可能看起来像这样:

const mapStateToProps = (state) => ({ 
   specificProperty: state.specificProperty,
   // any props you need else
});

class YourComponent extends React.Component {
    render() {
      // render your component  
    }

    componentDidUpdate(prevProps, prevState, snapshot) {
        if (prevProps.specificProperty !== this.props.specificProperty) {
            // Do whatever you want
        }
    }
}

YourComponent = connect(mapStateToProps)(YourComponent);
于 2017-06-25T21:40:36.690 回答
67

有两种基本方法:要么是在操作完成后区分状态的中间件,要么使用 Redux 的低级store.subscribeAPI。

Redux FAQ 有一个涵盖这个的答案。此外,我保留了一份与 Redux 相关的插件和实用程序的分类列表,其中包括一组现有的存储更改订阅库,这些库实现了各种方法来监听数据更改。

于 2016-04-11T20:06:46.767 回答