【发布时间】:2016-08-16 18:53:56
【问题描述】:
我正在 Redux 商店上创建一个新操作。 我有一个项目列表,它们都具有“overlayVis”的属性。除了指定的 ID,我想将所有这些设置为 true。我目前的实现是
case ITEM_OVERLAY_TOGGLE:
// object to be updated and returned
var returnObj = state.data;
state.data.map((item) => {
if (item.id === action.id) {
returnObj = Object.assign({}, ...state, {
data: [
...state.data.slice(0, item.id),
Object.assign({}, ...state.data[item.id], {overlayVis: false}),
...state.data.slice(item.id + 1)]
});
} else if (!item.overlayVis) {
returnObj = Object.assign({}, ...state, {
data: [
...state.data.slice(0, item.id),
Object.assign({}, ...state.data[item.id], {overlayVis: true}),
...state.data.slice(item.id + 1)]
});
}
});
return returnObj;
每次迭代都会覆盖上一次迭代,因此每次运行操作时只进行一次更改。我试图使用“state”和“returnObj”而不是“...state”,但它没有奏效。好久没在这里发帖了,没啥想法。
任何帮助将不胜感激!
【问题讨论】:
标签: javascript action state redux