如何在 "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
是不可用的。
因为 notifications
在 global
.
里面
与此方法相反的是使用 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))))
我有一个 React、redux-saga、不可变的 js 应用程序。
有了这个架构,我的 redux store 是这样的。
global: {
notifications:{...}
...
},
home: {
...contents
}
问题是当我想更新时 home contents
我正在使用连接到家里的减速器。但是在home reducer里面,notifications
是不可用的。
因为 notifications
在 global
.
与此方法相反的是使用 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))))