如何在单独的父组件中分派操作

时间:2018-02-22 19:06:25

标签: reactjs redux react-router react-redux react-router-redux

我正在尝试使用react,redux和react-router-redux构建的应用程序。它的构建使得页眉和页脚 - 反应组件 - 在路径中定义的实际页面“外部”。例如,这就是<App/>的样子:

<Provider store={store}>
   <ConnectedRouter history={history}>           
      <div>
         <header/>
         {routes_for_pages}
         <footer/>
      </div>               
   </ConnectedRouter>
</Provider>  

在其中一个路由上,它们是一个调度操作的组件,并且根据返回的结果,需要使用适当的内容更新页眉和页脚。

如何在该特定组件中发送调度同时向页眉和页脚发送操作?我看到的问题是组件(页面组件,页眉组件和页脚组件)彼此不了解,它们是作为兄弟组成的。

任何帮助表示赞赏。 TIA。

1 个答案:

答案 0 :(得分:1)

无需从多个组件调度操作。 相反,你应该有多个reducer,每个reducers根据调度的动作做不同的事情。

如果您使用redux-saga,则此代码可以更清晰。 你抓住了一个传奇中的初始动作,并让传奇进一步发出一系列应该连续或一起发生的动作。

E.g:

// saga handler
function* mySaga(action) {
  yield put('DO_SOMETHING');  // dispatches DO_SOMETHING
  yield put('UPDATE_HEADER'); // ...
  yield put('UPDATE_FOOTER'); // ...
}

function mySagaWatcher(
  takeLatest,
  'SOMETHING_TRIGGERED_THIS_ACTION',
  mySaga
);