我在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

注意:如果要使其真正保存(不传递引用),则可以在操作内部复制传递的值。

09-12 06:45