如何在 "global" reducer 中使用 "home" 状态?

How can I use "home" state within "global" reducer?

我有一个 React、redux-saga、不可变的 js 应用程序。

有了这个架构,我的 redux store 是这样的。

global: {
   notifications:{...}
   ...
},
home: {
   ...contents
}

问题是当我想更新时 home contents 我正在使用连接到家里的减速器。但是在home reducer里面,notifications是不可用的。 因为 notificationsglobal.

里面

与此方法相反的是使用 global reducer,通知在全局状态可用。但是这次我无法访问 home > contents

我的代码如下。

这是附加到全局的减速器:

case CONTENT_ADD_SUCCESS:
  return state
    .set('loading', false)
    .update('notifications', arr => arr.push(
      fromJS(
      {
        show: true,
        type: 'success',
        message: action.response.message,
      }
    )
   .setIn(['home', 'contents'], action.response.newContent)
  ))

全局减速器注入

const withReducer = injectReducer({ key: 'global', reducer });
const withSaga = injectSaga({ key: 'global', saga });

export default compose(
  withReducer,
  withSaga,
  withConnect,
)(withStyles(mainLayoutStyle)(MainLayout));

如何使用不同的减速器状态?对于此示例,我想访问全局通知并更新主页内容。

我不知道我可以对不同的减速器使用相同的常量。

基本上我附加了另一个减速器,一个家用减速器到相同的常量。

下面是我的代码: 这是为了 layout reducer. 使用 CONTENT_ADD_SUCCESS

管理通知
case CONTENT_ADD_SUCCESS:
        return state
            .set('loading', false)
            .update('notifications', arr => arr.push(
                fromJS(
                    {
                        key: CONTENT_ADD_SUCCESS_N_ID,
                        show: true,
                        type: 'success',
                        message: action.response.message,
                    }
                )
            ))

这个用于 home reducer 使用 CONTENT_ADD_SUCCESS

管理家庭内容
case CONTENT_ADD_SUCCESS:
        console.log('HOME REDUCER :: CONTENT_ADD_SUCCESS', state);
        return state
          .update('contents', arr => arr.unshift(fromJS(JSON.parse(action.response.newContent))))