如何为在Redux中触发的动作设置拦截器

时间:2019-03-02 16:34:05

标签: reactjs redux react-redux

我有一个约有50个组件的非常大的表单,我想调用一个reducer,只要对表单进行了任何更改(即,每当触发一个动作时),就将一个标志设置为true。

我想要的是该标志说hasFormChanged,最初是false。每当调用单个操作来更改表单时,它都会检查此标志并将其设置为true(如果还不是真的)。就像动作拦截器一样。

我不确定该如何组织。我真的不想将标志设置减少器传递给我的所有组件。将会有很多重复的代码

1 个答案:

答案 0 :(得分:1)

您正在寻找的是custom redux middleware
这是中间件的示例(来自上面的链接):

const logger = store => next => action => {
  console.group(action.type)
  console.info('dispatching', action)
  let result = next(action)
  console.log('next state', store.getState())
  console.groupEnd()
  return result
}

您可以通过操作调用store.dispatch()来设置所需的标志。