类型错误:无法读取 null 的属性“名称”

IT技术 javascript reactjs
2021-04-28 21:21:51

我有一个用户对象,他们可以在其中编辑他们的信息(电话号码、电子邮件等)

我无法访问回调name内部的输入setState并继续获取TypeError: Cannot read property 'name' of null

但是,当我记录event.target.name时,它显示在那里。

当我更改一个简单的状态时,它可以工作:

假设状态值与目标名称相同。

this.setState({ [event.target.name]: value });

我正在关注这篇文章以更新用户对象。

对不起,如果这是重复的,我找不到我要找的东西。

  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)
}
1个回答

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 }
    }))

  }

来自文档:链接

其他解决方案:

handleUserChange(event) {
    event.persist();
    const value = event.target.value;
    this.setState(prevState => ({
      user: {...prevState.user, [event.target.name]: value }
    }))

  }

保持事件的值。