javascript - 设置对象属性的状态

标签 javascript reactjs

我有为每个更改处理程序创建函数的工厂方法:

makeHandleChange = changedProperty => newVal => {
    const newState = { ...this.state, [changedProperty]: newVal };
    this.setState({ ...newState });
  };

它正在被执行,例如:

onChange={this.makeHandleChange('phoneNumber')}

如何使用此函数设置属性对象的状态?

例如,我必须setState info.phoneNumber 属性:

state = {
    info: {
       phoneNumber: '',
    },
}

我如何使用这个 makeHandleChange 函数来做到这一点?

最佳答案

有两种方法可以让它发挥作用。一种是更新您的工厂代码,以便它考虑嵌套状态属性。另一种可能更简单的方法是在需要更新状态时传入整个嵌套对象。

例如,如果您有一个 input 字段来更新嵌套在 this.state.info 中的 phoneNumber 属性:

    <input
      type="text"
      onChange={e => this.makeHandleChange("info")({ ...this.state.info, phoneNumber: e.target.value})}
      value={this.state.phoneNumber}
    />

在传递给函数的对象中,确保在设置新值,以便不会覆盖/删除任何其他嵌套属性。

关于javascript - 设置对象属性的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54401708/

相关文章:

Javascript src 问题

javascript - 将选择的 JQuery 插件添加到我的 HTML 中

reactjs - 如何使用react-redux将redux存储中封装的ui状态映射到props?

javascript - react 路由器组件 Prop 不接受 <Link/> 组件?

javascript - 当我尝试将变量传递给 react 模式时, props 的值为空

javascript - D3、设置y轴线的最大条数

javascript - getJSON,在调用之前更改 api 调用 url 变量

reactjs - 使用 Reactjs 来自相同 JSON 的具有父 ID 的嵌套树

javascript - 将多个引用传递给子组件

javascript - firebase__webpack_imported_module_2__.auth.createuserwithemailandpassword 不是函数。?