javascript - 如何在对象中使用动态属性

标签 javascript reactjs ecmascript-6

我有一个带有动态参数的handleInputBlur函数。假设我有这样的 this.props.user 对象

{ name: 'abc', age: 10 }

然后在我的 UI 中我可以进行内联编辑,因此 handleInputBlur 将获得一个名为 changeField 的参数,它将是包含更改的字段的对象:

{ age: 10 }

我仍然需要将整个对象传递回后端,如何用现有对象替换更新的字段?

我尝试了此操作,但收到了意外的 token 错误:

handleInputBlur = (changedField) => {

    const existingUser = this.props.user

    const updatedUserObj = Object.assign({}, existingUser, {
        existingUser[changedField]: changedField
    })
}

如何根据 changedField 的键和值更新现有用户?

最佳答案

使用computed property names通过用方括号包围作为表达式的键,以便将其计算值用作键:

const key = Object.keys(changedField)[0];
const updatedUserObj = Object.assign({}, existingUser, {
    [key]: changedField[key]
})

首先,将计算表达式key的值,然后该值将用作键。请注意,Object.keys(changedField)[0]key 的值。其作用是获取 changedField 对象中的第一个键 - 正在更改的属性,例如 'name''age'。然后,通过访问 changedField 中第一个键的值,将该属性设置为新属性的值。

关于javascript - 如何在对象中使用动态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45539624/

相关文章:

javascript - 使用 Object.assign 更新对象的内部元素

javascript - 匹配对象 ObjectId 以使用其 "matching"数据

javascript - 使用窗口大小JavaScript显示和隐藏div?

javascript - 将二进制文件从 javascript 传送到 flash

javascript - 尝试构建一个基本的 React-Redux 点击切换器,但没有显示任何内容

javascript - 根据输入从数组索引值返回值

javascript - 更改事件事件未触发

javascript - 为什么递归生成器函数在 ES2015 中不起作用?

javascript - Codemirror,如何添加插件

javascript - 从javascript中的<div> CSS样式获取图像数据