如何将对象传递给对象的属性?

时间:2019-01-06 20:54:20

标签: javascript redux functional-programming reducers

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

围如何更好地使用函数式编程?

1 个答案:

答案 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

注意:如果要真正保存它(不传递参考),可以在操作内部复制传递的值。