我有一个用户对象,可以编辑他们的信息(电话号码,电子邮件等)
我无法访问name
回调中的输入setState
并继续获取TypeError: Cannot read property 'name' of null
然而,当我记录它显示的event.target.name
时。
当我改变一个简单的状态时,它可以工作:
假设状态值与目标名称相同。
this.setState({ [event.target.name]: value });
我正在关注this帖子以更新用户对象。
很抱歉,如果这是重复的,我找不到我要找的东西。
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)
}
答案 0 :(得分:3)
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 }
}))
}
来自文档:link
其他解决方案:
handleUserChange(event) {
event.persist();
const value = event.target.value;
this.setState(prevState => ({
user: {...prevState.user, [event.target.name]: value }
}))
}
坚持事件的价值。