javascript - 根据用户输入 handleChange 改变嵌套对象 props 的状态

标签 javascript reactjs

我有这个组件状态

this.state = {
      title: "",
      salary: {
        min: "",
        max: "",
        single: ""
      }
}

我用这个函数来处理用户输入

handleInputChange = (e) => {
    this.setState({[e.target.name]:e.target.value});
}

它适用于

<input type="text" id="title" name="title" onChange={this.handleInputChange}/>

我可以使用这样的函数来改变this.state.salary.min/max ...

我的意思是这种类型的函数可以与状态和 <input/> name art 中的嵌套对象一起使用吗? ?

最佳答案

是的,你可以,但你需要更新整个嵌套对象。

您有多种选择:

对象.assign()

const salary = Object.assign({}, this.state.salary, { min: minValue });

this.setState({ salary });

展开运算符

const salary =  {
    ...this.state.salary,
    min: minValue
}

this.setState({ salary });

不可变数据结构

不可变的.js

this.state = {
    salary = Immutable.Map({ 
        min: 8,
        max: 10
    });
};

const salary = this.state.salary.set('min', minValue);

this.setState({ salary });

不变性助手

参见 https://reactjs.org/docs/update.html

const salary = update(this.state.salary, {
    min: minValue
});

this.setState({ salary });

关于javascript - 根据用户输入 handleChange 改变嵌套对象 props 的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48671360/

相关文章:

jquery - 有没有办法动态删除或禁用 JavaScript 文件?

javascript - 从其他对象填充对象中的字段

javascript - phantomjs 不正确的 pdf 渲染

javascript - 如何在 xAxis 中获取带有日期的类别?

reactjs - block 编辑器给出无效的钩子(Hook)调用错误

reactjs - 如何将 redux 连接到非默认组件

javascript - 在html5中一个接一个地播放视频

javascript - 根据 react-native 侧边栏菜单中的选择在主视图中显示片段。

node.js - package.json 中的所有包都包含在 React 构建中吗?

javascript - 使用移动图库中图片上的分享按钮将其上传到 PWA