javascript - 在 FileReader 中发生事件后 React JS 没有改变状态
问题描述
我一直在尝试将通过输入标签在本地上传的 .txt 文件的内容指定为状态。我使用了文件阅读器,但是虽然打印了文件的内容,但根据 React 开发工具,状态并没有改变。
这是代码:
handleFile = (file) => {
var fileReader = new FileReader()
fileReader.readAsText(file)
fileReader.onloadend = function (e) {
var content = e.target.result
console.log(content)
this.setState={
text: content
}
}
函数 handleFile 在这里被调用:
<input type="file" accept='.txt' className="custom-file-input" id="customFile"
onChange={e => this.handleFile(e.target.files[0])} />
非常感谢
解决方案
setState 是一种方法,因此要使用它,您应该键入以下内容:
this.setState({key:value})
但它不起作用,因为你的代码中的“this”是指向 fileReader 的链接——你需要 React。尝试使用箭头函数抛出正确的“this”:
fileReader.onloadend = (e)=> {
var content = e.target.result
console.log(content)
this.setState({
text: content
})
}
推荐阅读
- excel - XLOOKUP 选择要在其中搜索的列
- javascript - 使用 useContext 时停止重新渲染
- python - 在自定义 pyqtgraph 绘图小部件中实现十字准线,如 pyqtgraph 股票示例
- python - 类构造函数需要浮点数或无。如何计算 float('nan') 值?
- python - 使win32 api颜色选择器始终位于顶部?
- c# - c# 字符串名称调用类中的变量名 asp.net mvc core
- node.js - 无法在 Windows 上连接 MongoDB 指南针 - 在 CMD 中显示连接失败
- javascript - 从子域访问 localStorage
- python - gspread.exceptions.APIError 超出网格限制 - 使用 Python 将新行和数据框添加到 gsheet
- python - 使用函数查找更大的两个数字