在对象上使用...运算符

时间:2017-03-30 18:53:29

标签: javascript redux

我无法弄清楚如何使用点差运算符更深入一级。我正在使用Redux,我有这个用户状态:

const INITIAL_STATE = {
    token: null,
    progress: {
        hasSeenTutorial: false,
        hasSignedUp: false
    },
    information: {
        fullname: null,
        username: null,
        phone: null,
        verificationCode: null
    }
}

我正在尝试在我的操作中使用展开运算符将hasSeenTutorial更改为true

case 'UPDATE_TUTORIAL_SEEN':
            return {...state, hasSeenTutorial: action.payload}

但是这会在我的对象的末尾添加一个新的hasSeenTutorial,所以显然我想使用这样的东西:

case 'UPDATE_TUTORIAL_SEEN':
            return {...state, progress.hasSeenTutorial: action.payload}

请注意添加的progress.

但这不是你如何正确访问它 - 它会抛出一个错误,正确的方法是什么?

注意:关键是也不要修改hasSignedUp - 我只想使用扩展运算符访问和修改hasSeenTutorial。

编辑:这个问题很独特 - 我想知道如何只使用扩展语法...而不使用Object.create或Object.assign - 如果我使用那些我可能不会同时在...中混合。

1 个答案:

答案 0 :(得分:2)

case 'UPDATE_TUTORIAL_SEEN':
  return {
    ...state,
    progress: {
      ...state.progress,
      hasSeenTutorial: action.payload
    }
  };