【发布时间】:2018-04-14 13:50:10
【问题描述】:
我是反应世界的新手,我无法从表单输入字段中正确更改状态。我正在构建一个将保存在数据库中的员工档案。我在组件状态下创建了一个配置文件并从输入字段中获取用户数据。但是,在 OnChange 事件处理函数中,薪水和标题字段并没有改变。候选人是员工的对象表示
this.state = {
candidate: {
account: {
firstName: '',
lastName: '',
email: '',
phone: '',
},
salary: '',
headline: '',
topSkills: [{
experience1: '',
title1: ''
}, {
experience2: '',
title2: ''
}, {
experience3: '',
title3: ''
},
],
}
}
onChange函数
handleChange(e) {
const name = e.target.name;
const value = e.target.value;
let copyState = Object.assign({},
this.state.candidate);
copyState.account[name] = value;
copyState.topSkills[name] = value;
copyState.salary = value;
copyState.headline = value;
this.setState(copyState);
}
工资和标题中的输入字段不接受用户输入
<input
name="salary"
type="number"
value={this.state.candidate.salary|| ''}
onChange={this.handleChange}
/>
谁能提供帮助并建议如何在 onChange 函数上构造 setState?
【问题讨论】:
-
您将状态设置为
copyState,而且,为什么要将所有字段设置为value? -
正如@Daniel Nilles 所说,你很难改变你的状态。如果操作正确,状态会合并更改,您不需要每次都复制整个状态。我建议学习对象传播语法,它对于 React 中的大多数状态变化非常有用。顺便说一句,我也是一个学习者。
-
“工资和标题中的输入字段不接受用户输入”是什么意思?您根本无法输入任何内容吗?您是否尝试输入 $ 或其他货币符号?你试过只输入数字吗?
标签: javascript reactjs onchange