我有一个来自ImmutableJS的Record对象,我正在尝试使用stack
将一个元素推送到Record中的属性withMutations
数组中:
/* eslint-disable new-cap */
const InitialState = Record({
isOpen: true,
item: null,
type: '',
stack: []
});
/* eslint-enable new-cap */
const initialState = new InitialState;
export default function modal(state = initialState, action) {
...
return state.withMutations((ctx) => {
const newStack = ctx.get('stack');
newStack.push({
item: action.item,
type: action.type
});
ctx.set('isOpen', true)
.set('item', action.item)
.set('type', action.type)
.set('stack', newStack);
});
});
但是,这似乎取消了Record中的stack
属性。
当我这样做时,它正确地将数组设置为stack
。
return state.withMutations((ctx) => {
ctx...
.set('stack', [{
item: action.item,
type: action.type
}]);
});
因此,
两个问题
一个。如何使用数组设置stack
属性?
B中。应该如何在ImmutableJS中将对象推送/弹出数组?
答案 0 :(得分:0)
我最终做的是:
<强>推强>
/* eslint-disable new-cap */
const InitialState = Record({
isOpen: true,
item: null,
type: '',
stack: List()
});
return state.withMutations((ctx) => {
ctx...
.update('stack', stack => stack.push({
item: action.item,
type: action.type
}));
});
<强>弹出强>
return state.withMutations((ctx) => {
ctx...
.update('stack', stack => stack.pop());
});