从Redux状态获取值

时间:2018-02-05 10:07:00

标签: angular redux rxjs angular-redux

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

WizrdReducer:

{
  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()函数的文章,我们不应该用它来获取状态(反模式,你也这么认为吗?)。 我们当前的解决方案是订阅状态中的每个子reducer(step1SubReducer,Step2SubReducer)并将这些值分配给向导组件内的变量,但它看起来像一个变通方法,即使我们只需要它也会导致许多订阅触发事件在我们的最后一步。 有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

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

stepReducer=(state={steps:[{step1...},{step2...}]},action)=>{
  const {payload,type}=action
  const {step,data}=payload
  payload.data
  switch(action.type):
    case 'UPDATE_FORM':
   ... 
 }