【发布时间】:2017-06-05 03:13:11
【问题描述】:
我有一个初始状态:
export default {
dashboards: [],
dashboardContent: []
};
我想在这样的动作调度之后通过减速器更新:
import initialState from './initialState';
import * as types from '../actions/actionTypes';
export default function dashboardContentReducer(state = initialState, action) {
switch(action.type) {
case types.LOAD_DASHBOARD_CONTENT_SUCCESS:
return Object.assign({}, state, { dashboardContent: action.dashboardContent });
default:
return state;
}
}
和
import initialState from './initialState';
import * as types from '../actions/actionTypes';
export default function dashboardReducer(state = initialState, action) {
switch(action.type) {
case types.LOAD_DASHBOARDS_SUCCESS:
return Object.assign({}, state, { dashboards: action.dashboards });
default:
return state;
}
}
调度操作后,当我查看我的商店时,我看到它已更新,但太深了一层:
{
dashboards: {
dashboards: [/* array received from reducer */],
dashboardContent: []
},
dashboardContent: {
dashboards: [],
dashboardContent: [/* array received from reducer */]
}
}
我怎样才能让它变成我想要的,这应该是:
{
dashboards: [/* payload received from reducer */],
dashboardContent: [/* payload received from reducer */]
}
编辑:
这是有效载荷的外观。
对于仪表板内容:
[
{
application: 'Company News',
site: 'Home',
lastUpdated: 'Jun 1, 2016 10:30',
location: 'Asbury',
views: 123451,
individuals: 2345
},
{
application: 'Company News',
site: 'Home',
lastUpdated: 'Jun 1, 2016 10:30',
location: 'Asbury',
views: 123451,
individuals: 2345
},
{
application: 'Company News',
site: 'Home',
lastUpdated: 'Jun 1, 2016 10:30',
location: 'Asbury',
views: 123451,
individuals: 2345
},
{
application: 'Company News',
site: 'Home',
lastUpdated: 'Jun 1, 2016 10:30',
location: 'Asbury',
views: 123451,
individuals: 2345
},
{
application: 'Company News',
site: 'Home',
lastUpdated: 'Jun 1, 2016 10:30',
location: 'Asbury',
views: 123451,
individuals: 2345
}
];
对于仪表板:
[
{
id: 1,
title: "Overview",
template: "main",
category: "Main",
sort: {},
filter: {
loginType: "All Accounts",
Pivot: "location",
pivotValue: 1
},
priority: 0,
readonly: true
},
{
id: 2,
title: "Top Applications",
template: "application-usage",
category: "Application Usage",
sort: {
first: {
by: "views",
direction: "desc"
},
second: {
By:"individuals",
direction: "desc"
}
},
filter: {
application: 0,
Pivot: location,
pivotValue: 1
},
priority: 1,
readonly: true,
createdDate: "2016-12-29T16:37:11.62Z",
updatedDate: "2016-12-29T16:37:11.62Z"
}
]
【问题讨论】:
-
可能action payload不是一个数组,而是一个与初始状态具有相同形状的对象。
-
事实并非如此。我将更新帖子以包含有效负载的外观。
-
试试这个代码,如果它有效:
return Object.assign({}, state, action.dashboards); -
很遗憾没有...
-
你在使用
combineReducers吗?因为这将创建两个不同的状态对象
标签: javascript reactjs ecmascript-6 redux react-redux