【发布时间】:2019-06-13 17:10:40
【问题描述】:
我有一个表单,当我提交它时,我想更新状态。现在只有名字和姓氏有效。我如何使用函数 handleChange 来更新嵌套对象的地址?还是我需要为此编写另一个函数? 感谢您的帮助
class Form extends Component {
constructor(props){
super(props);
this.state = {
name: '',
surname: '',
address: {
street: '',
city: '',
},
}
}
handleChange = e => {
this.setState({
[e.target.name]: e.target.value,
})
}
handleSubmit = e => {
e.preventDefault();
}
render() {
const {name, surname} = this.state;
const { street, city} = this.state.address;
return (
<form onSubmit={this.handleSubmit}>
<input type='text'
value={name}
name='name'
onChange={this.handleChange} />
<input type='text'
value={surname}
name='surname'
onChange={this.handleChange} />
<input type='text'
value={street}
name='street'
onChange={this.handleChange} />
<input type='text'
value={city}
name='city'
onChange={this.handleChange} />
<input type='submit' value='Submit' />
</form>
);
}
}
【问题讨论】:
-
您的代码无法更新
name和surname,因为没有提供name属性(但您希望这是e.target.name)。你能实现代码sn-p吗?你认为name字段address->city是什么? -
为每个输入添加一个名称,然后在
handleChange中检查该名称,以将街道和城市与其他输入区分开来。
标签: javascript reactjs forms state