Reactjs 如何观察重复操作?

Reactjs 如何观察重复操作?,reactjs,events,redux,react-redux,observer-pattern,Reactjs,Events,Redux,React Redux,Observer Pattern,我有一个Redux商店,可以执行以下操作: const rootReducer = (state = initialState, action) => { switch (action.type) { case SAVE_ORDER_SUCCESS: return {...state, order: action.data.order,

我有一个Redux商店,可以执行以下操作:

  const rootReducer = (state = initialState, action) => {
        switch (action.type) {
            case SAVE_ORDER_SUCCESS:
                return {...state,
                    order: action.data.order,
                    completedActionType: SAVE_ORDER,
                    completionStatus: SUCCESS,

                }
            case RECALC_ORDER_SUCCESS:
                return {...state,
                    order: action.data.order,
                    completedActionType: RECALC_ORDER,
                    completionStatus: SUCCESS,
                }
            case SAVE_ORDER_ERROR:
                return {...state,
                    order: action.data.order,
                    completedActionType: SAVE_ORDER,
                    completionStatus: ERROR,
                }   
        }       
    }       
我的React应用程序通常在完成对服务器的请求后调用这些操作——在服务器上成功执行的情况下,或者在服务器返回一些错误的情况下。我希望通过显示自动消失的成功或错误警报(例如使用)来完成这些操作(例如保存订单成功),也就是说,我希望通过调用
this.props.alert.show(“…某些消息…”)来完成这些操作。当然,我可以尝试将此调用作为SAVE_ORDER_SUCCESS和其他操作中的最后一个语句,但我觉得这是不好的:我想Redux操作应该是非可视和非交互式的,而且UI组件将侦听某些操作的完成,并且组件可以调用
alert.show(…)
在事件监听器中,对此类操作事件执行操作。但是是否存在模式?如何在React组件或函数组件中创建事件侦听器,如何使用Redux操作注册这些事件侦听器,以及此类事件侦听器如何观察Redux操作的完成情况

我的意图是否有某种意义,对于这样的事件/侦听器/观察者模型是否有反应模式

当然,您可能会尝试在组件的
getDerivedStateFromProps()
中使用
state.completedActionType
state.completionStatus
,但它不会走得太远,因为您应该通过将这些值与以前的值(可以存储在组件的本地状态)进行比较来跟踪这些值在这种情况下,如果错误操作多次成功,则不存在工作场景

我知道关于定制事件数组的想法(不幸的是,这个伟大的问题很少受到关注),但我想应该存在一些更标准的模式


有一个方法,但它没有参数,它可以用来检测状态的变化,但我看不出人们是如何看到哪个动作被执行的。

您不能使用?

我只是在我的每个动作中添加了
completionTime:new Date()
,然后组件的componentDidUpdate完成了所有工作:

componentDidUpdate(prevProps, prevState) {
    if (prevProps.completionTime!=this.props.completionTime) {
      //do whatever needs to be done  
    }
}
就这么简单,没有特别的观察员。当然,可以在存储中引入侦听器数组,然后在该数组中注册侦听器并构建所有基础结构,但我想,
componentdiddupdate
是正确的工具