如何使用嵌套属性的对象传播?

Mar*_*nst 7 javascript object reactjs react-redux

我试图在我的reducer(react-redux)中返回以下内容,它给我一个语法错误:

return { ...state, loginForm.email: action.payload.email }

state = { loginForm: { email: '', password: '' } } so on
Run Code Online (Sandbox Code Playgroud)

我安装了babel预设的0级和es2015.这很好用:

return { ..state, loginForm: action.payload }
Run Code Online (Sandbox Code Playgroud)

May*_*kla 18

因为这个键你得到错误:

loginForm.email
Run Code Online (Sandbox Code Playgroud)

它不是有效的对象键.

写这样:

return { 
    ...state, 
    loginForm: {
        ...state.loginForm,
        email: action.payload.email
    } 
}
Run Code Online (Sandbox Code Playgroud)

  • @Nux,一种可能的方法是扩展到这一点,如下所示: `return { ...state, obj: { ...state.obj, one: { ...state.obj.one, Two: { 。 ..state.obj.one.two, Three: { ...state.obj.one.two. Three, z: newValue, } } } } }`,另一种方法可以使用深度克隆,然后更改该值。 (2认同)