javascript - 无法读取未定义的属性 'target'

标签 javascript reactjs

在我的渲染方法中我有组件

<DatePicker selected={this.state.startDate} onChange={this.handleChange()}/>

handleChange 紧随其后

handleChange: function (e) {
  var that = this;
  console.log(e.target.value)
  return function () {
    that.setState({
      startDate: e.target.value
    });
  }
},

当我尝试使用该组件加载页面时,出现错误

Cannot read property 'target' of undefined

我做错了什么?

最佳答案

问题是您在这一行中调用函数:

onChange={this.handleChange()}

您只需将函数作为值传递给 onChange 而无需调用它。

onChange={this.handleChange}

当您使用括号时,您将调用一个函数/方法,而不是将其与事件处理程序绑定(bind)。比较以下两个示例:

//invokes handleChange() and stores what the function returns in testA.
const testA = this.handleChange()  

对比

//stores the function itself in testB. testB be is now a function and may be invoked - testB();
const testB = this.handleChange 

关于javascript - 无法读取未定义的属性 'target',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46389220/

相关文章:

javascript - 如何处理多个函数共享div时ajax响应慢

javascript - Dart 的运算符重载如何转化为 javascript?

javascript - 短路逻辑或语句,与内联三元相结合

javascript - 如何在 Rails 中的 Controller 操作成功或失败的 View 中显示 JSON 状态消息?

reactjs - Create-React-App 编译失败 |导入/第一次错误

javascript - 这个正则表达式有什么问题 :/(? :(? :^|\s)hide_([^\s]+))+/?

reactjs - 无法读取 react 中未定义的属性 'push'

reactjs - ES6 import 语句中花括号的用途是什么?

javascript - VSCode 仅在导入到某处时才通过相应的 Foo.d.ts 为 Foo.js 提供智能感知;如何在 Foo.js 本身中启用智能感知?

javascript - React Native Expo 音频播放器错误 - 播放器不存在