我在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
}
}
围如何更好地使用函数式编程?
答案 0 :(得分:1)
您可以使用这两种变体,只要不进一步引用动作的有效载荷且不会对其进行更改/更改即可。
好:
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
注意:如果要真正保存它(不传递参考),可以在操作内部复制传递的值。