Redux和减速器内的一个访问不同的减速器,怎么样?

jam*_*non 11 redux react-redux

所以,我有一个有多个reducer的应用程序,因此有多个动作创建者关联.

有一段时间我的一个Reducer更新状态(因为编辑),因此,我必须确保其他reducers看到此更新并相应地调整它们的状态.

把它想象成用户选择"运动鞋",这个状态管理在一个名为productsReducer的减速器中.因此,当用户通过应用程序进程移动时,他们会获得与之关联的优惠券Rededcer ...但是用户可以随时"编辑",所以如果他们然后编辑"运动鞋"并说,选择另一个制作人,我必须能够实时更改优惠券减少器,因为进度模式需要反映这一点.我可以通过流程到优惠券页面来做到这一点,因为在那个页面上我只是调和了componentWillMount上的数据......但是我有一个进度模式,在进入优惠券页面之前,用户可以打开进度模式......这里会有一个错配......

我知道,我只想解释我的情况.

所以,我希望能够在productsReducer中调用"其他reducer"或他们的动作创建者.

中间件是否适合这里,我会嗅到某个"action.type",如果我看到它,我可以发送其他action.type's或者有没有办法从productsReducer中调用动作创建者?

导入:导入*作为来自'./couponsActions'的优惠券以及我需要的任何其他操作似乎不合适.

Nat*_*gen 20

基于应用程序状态更新状态是反模式.解决方案更简单:

如果某个操作影响多个reducers,请在关注的reducers中订阅该操作.

因此,当用户选择时sneakers,触发这些操作

{ type: 'item_select', payload: 'sneakers' }
Run Code Online (Sandbox Code Playgroud)

然后在couponsReducer,有这样的事情:

function (state = initialState, action) {
  if (action.type == 'item_select') {
    return { ...state, activeProduct: action.payload);}
  }
  return state;
}
Run Code Online (Sandbox Code Playgroud)

您不希望级联更新,其中状态依赖于其他状态更改.您需要一个简单的调度架构,其中一个操作同时影响所有内容.

  • “基于应用程序状态的更新状态是反模式”?那没有任何意义。减速器功能的全部要点是您基于*当前状态*和操作来做出决策。 (3认同)
  • 似乎我们的术语不匹配。我认为您要说的是“在状态下基于_diffs_做事情是个坏主意”?而且,我仍然不同意您对操作的声明,尤其是在使用中间件的情况下。分派一个动作,让中间件拦截它,然后分派一个或多个其他动作作为响应是完全有效的。这就是中间件的用途。 (3认同)