反应本机不可变数据结构错误

时间:2018-05-20 12:02:39

标签: react-native

在我的应用程序中,我有以下代码。

   case ADD_MOVEMENT:
      let am_selectedTrainerMovements = state.selectedTrainerMovements;

      state.trainerMovements.forEach(movement => {
        if (movement.id === action.movement.id) {
          am_selectedTrainerMovements.push(movement);
        }
      });

      return {
        ...state,
        selectedTrainerMovements: am_selectedTrainerMovements
      };
      break;

在减速机中,我使用这种情况。但是这给了我一个错误,说“不能在不可变数据结构上调用push方法”

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

您将am_selectedTrainerMovements设置为等于state.selectedTrainerMovements,因此您只需创建一个指向完全相同对象的新指针。因此,当您调用am_selectedTrainerMovements.push尝试更改不可变的状态时。

您需要克隆state.selectedTrainerMovements,例如:

let am_selectedTrainerMovements = 
    Object.assign({}, state. state.selectedTrainerMovements);