我在reducer中有以下代码:
export const getSerieSuccess = (state = INITIAL_STATE, action) => {
return {
...state,
isLoadding: false,
serie: action.serie //action.serie is a object with id, name, genre e status
}
}
我想知道我是否执行
serie: action.serie
,我正在传递值或引用。我这样做是:export const getSerieSuccess = (state = INITIAL_STATE, action) => {
const serie = {...action.serie};
return {
...state,
isLoadding: false,
serie
}
}
如何更好地使用函数式编程?
最佳答案
只要不进一步引用操作的有效负载且不会对其进行更改/更改,就可以使用这两种变体。
好:
store.dispatch(new SomeAction({a: b: {
c: 1234
}));
无效的(因为您传递了引用,然后进行了更改):
let value = new SomeAction({a: b: {
c: 1234
});
store.dispatch(value);
value.a.b.c = 44543; // bad
setTimeout(_ => (value.a.b.c = 5555), 5000); // bad
注意:如果要使其真正保存(不传递引用),则可以在操作内部复制传递的值。