TypeError:无法读取属性' name' null

时间:2017-09-22 19:06:38

标签: javascript reactjs

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

我无法访问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)
}

1 个答案:

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

  }

坚持事件的价值。