Sim*_*mon 5 javascript reactjs
我有一个用户对象,他们可以在其中编辑他们的信息(电话号码、电子邮件等)
我无法访问回调name内部的输入setState并继续获取TypeError: Cannot read property 'name' of null
但是,当我记录event.target.name它时,它显示在那里。
当我更改一个简单的状态时,它可以工作:
假设状态值与目标名称相同。
this.setState({ [event.target.name]: value });
Run Code Online (Sandbox Code Playgroud)
我正在关注这篇文章以更新用户对象。
抱歉,如果这是重复的,我找不到我要找的东西。
handleUserChange(event) {
console.log(event.target.name);
const value = event.target.value
this.setState(prevState => ({
user: {...prevState.user, [event.target.name]: value }
}))
}
Run Code Online (Sandbox Code Playgroud)
编辑:我在类构造函数中正确绑定它,如下所示:
contructor(props) {
super(props);
...
this.handleUserChange = this.handleUserChange.bind(this)
}
Run Code Online (Sandbox Code Playgroud)
Jer*_*enk 13
React 正在回收这个事件。所以对setState的异步调用不会知道event.target.name的值,因为事件已经消失了。您需要制作与event.target.value相同的值的副本。
handleUserChange(event) {
console.log(event.target.name);
const name = event.target.name;
const value = event.target.value;
this.setState(prevState => ({
user: {...prevState.user, [name]: value }
}))
}
Run Code Online (Sandbox Code Playgroud)
来自文档:链接
其他解决方案:
handleUserChange(event) {
event.persist();
const value = event.target.value;
this.setState(prevState => ({
user: {...prevState.user, [event.target.name]: value }
}))
}
Run Code Online (Sandbox Code Playgroud)
保持事件的值。
| 归档时间: |
|
| 查看次数: |
7075 次 |
| 最近记录: |