【问题标题】:"TypeError: Cannot read property 'state' of undefined" [duplicate]“TypeError:无法读取未定义的属性'状态'” [重复]
【发布时间】:2019-02-23 19:04:16
【问题描述】:

我正在尝试在 reactjs 中上传文件,我想在控制台中显示,但是当我点击上传按钮时它给了我

“TypeError: 无法读取未定义的属性‘状态’”

这是我的代码:

constructor(props) {
        super(props);

this.state = {
  selectedFile: null
};

this.fileSelectedHandler = this.fileSelectedHandler.bind(this);
}

fileSelectedHandler(event) {
  this.setState({
    selectedFile: event.target.files[0]
  })
}

handleUpload() {
  console.log(this.state.selectedFile)
}
render() {
 return (
    <div class="group">
      <input type="file" name="file" id="file" onChange={this.fileSelectedHandler} />
      <button onClick={this.handleUpload}> Upload </button>
    </div>
    )
}

我收到错误消息:console.log(this.state.selectedFile)

【问题讨论】:

  • 您必须在构造函数中将handleUpload 绑定到this,就像使用fileSelectedHandler 方法一样。
  • 在声明状态之前是不是调用了构造函数和super方法?
  • 你用一半的构造函数草率地复制粘贴了你的代码
  • 好吧,伙计们,我更新了忘记放构造函数和超级方法,现在我更新了代码。

标签: javascript reactjs


【解决方案1】:

有两种方法可以解决这个问题,要么将 handleUpload 绑定到正确的 this 内容,要么以下面的格式定义你的函数

handleUpload = () => {
console.log(this.state.selectedFile)
}

【讨论】:

  • 谢谢,兄弟成功了!
猜你喜欢
  • 2020-08-31
  • 2019-07-25
  • 2021-11-18
  • 2020-06-17
  • 2021-03-18
  • 2020-01-17
  • 2019-10-08
相关资源
最近更新 更多