0

我们正在 Angular 4 项目中使用 RXJS 和 Redux 进行状态管理。目前我们正在开发向导功能。该向导包括5个步骤,每个步骤都是自己的反应形式,并且每个步骤都有子reducer来处理自己的状态。

向导减速机:

{
  error: <handled by HOR>
  pending: <handled by HOR>
  warning: <handled by HOR>
  settings: <handled by sub-reducer>
  step1Subreducer: <handled by sub-reducer>
  step2Subreducer: <handled by sub-reducer>
  step3Subreducer: <handled by sub-reducer>
  step4Subreducer: <handled by sub-reducer>
  step5Subreducer: <handled by sub-reducer>
}

每一步都调度一个将表单值保存在状态中的操作。向导组件在最后一步执行保存操作,保存操作应从状态(所有子化简器)中收集所有值并执行 REST 操作以创建对象。我们阅读了很多关于 getstate() 函数的文章,并且我们不应该使用它来获取状态(反模式,你也这么认为吗?)。我们当前的解决方案是订阅 state(step1SubReducer, Step2SubReducer) 中的每个 sub reducer,并将这些值分配给向导组件内的变量,但这看起来像是一种解决方法,即使我们只需要它也会导致许多订阅触发事件在我们的最后一步。有什么建议么?

谢谢!

4

1 回答 1

0

您可以将所有步骤组合成一个减速器,当您离开一个步骤时,您可以取消订阅它

stepReducer=(state={steps:[{step1...},{step2...}]},action)=>{
  const {payload,type}=action
  const {step,data}=payload
  payload.data
  switch(action.type):
    case 'UPDATE_FORM':
   ... 
 }
于 2018-02-05T11:09:54.803 回答