【问题标题】:How to use object spread with nested properties?如何使用具有嵌套属性的对象传播?
【发布时间】:2018-04-16 14:44:11
【问题描述】:

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

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

state = { loginForm: { email: '', password: '' } } so on

我已经安装了 babel 预设阶段 0 和 es2015。这工作正常:

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

【问题讨论】:

    标签: javascript reactjs object react-redux


    【解决方案1】:

    我想你想要这样的东西:

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

    【讨论】:

    • 不确定,这个会完全覆盖loginForm,因此删除password 属性。
    • 这将覆盖整个 state.loginForm 对象值
    • 如果您不想被覆盖,您需要传播电子邮件的其余属性
    【解决方案2】:

    由于这个键,您得到的错误:

    loginForm.email
    

    这不是一个有效的对象键。

    这样写:

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

    【讨论】:

    • ``` const obj = { one: { a: '第一级', 二: { b: '第二级', 三: { c: '第二级', z: '我想使用扩展运算符来更新它' } } } }; ```
    • 这种情况怎么用?
    • @Nux,一种可能的方法是扩展至该点,如下所示:return { ...state, obj: { ...state.obj, one: { ...state.obj.one, two: { ...state.obj.one.two, three: { ...state.obj.one.two.three, z: newValue, } } } } },另一种方法是使用深度克隆然后更改该值。
    猜你喜欢
    • 2020-03-09
    • 1970-01-01
    • 2022-06-30
    • 2017-07-07
    • 2018-11-14
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 2017-10-26
    相关资源
    最近更新 更多