我有一个用户对象,他们可以在其中编辑他们的信息(电话号码、电子邮件等)
我无法访问输入name
在 - 的里面setState
回调并继续获取TypeError: Cannot read property 'name' of null
但是当我登录时event.target.name
它显示在那里。
当我更改一个简单的状态时,它会起作用:
假设状态值与目标名称相同。
this.setState({ [event.target.name]: value });
我正在关注this https://stackoverflow.com/questions/43638938/updating-an-object-with-setstate-in-reactpost 更新用户对象。
抱歉,如果这是重复的,我找不到我要找的东西。
handleUserChange(event) {
console.log(event.target.name);
const value = event.target.value
this.setState(prevState => ({
user: {...prevState.user, [event.target.name]: value }
}))
}
编辑:我在类构造函数中正确绑定它,如下所示:
contructor(props) {
super(props);
...
this.handleUserChange = this.handleUserChange.bind(this)
}
React 正在回收这个事件。所以异步调用setState不会知道的价值事件.目标.名称因为事件已经过去了。您需要复制该值,就像您所做的那样事件.目标.值.
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 }
}))
}
来自文档:link https://facebook.github.io/react/docs/events.html#event-pooling
其他解决方案:
handleUserChange(event) {
event.persist();
const value = event.target.value;
this.setState(prevState => ({
user: {...prevState.user, [event.target.name]: value }
}))
}
坚持事件的价值观。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)