javascript - useState 方法不允许访问外部变量?
问题描述
想知道为什么以下不起作用:
const onChange = e => {
console.log(e.target.value)
setEmails(prevEmails => ({
...prevEmails,
reports: e.target.value
}))
}
事件 'e' 变量 console.logs 但在 setEmails 中使用时说找不到 null 值?确切的错误:
Cannot read property 'value' of null
我在这里想念什么?
解决方案
您应该将值保存到另一个变量,或使用e.persist()
:
const onChange = e => {
console.log(e.target.value);
let myValue = e.target.value;
setEmails(prevEmails => ({
...prevEmails,
reports: myValue
}))
}
这是因为在 React中出于性能原因使用合成事件。从文档的事件池部分:
SyntheticEvent
是汇集的。这意味着该SyntheticEvent
对象将被重用,并且在调用事件回调后所有属性都将被取消。这是出于性能原因。因此,您不能以异步方式访问事件。
推荐阅读
- postgresql - “检查指针进程”在 Postgres 中消耗更多内存。如何控制它?
- oauth-2.0 - Dynamics 365 Web API 给出 401 错误?
- c# - 为我的项目对象启用 Google 存储签名 URL 上的 CORS
- perl - 如何转储散列引用后面的数据
- r - 在数据框R中合并具有相同模式名称的行
- r - 在 dplyr 分析中结合多个汇总统计信息
- python - Plotly subplot 生成两个具有相同数据的图,尽管轨迹包含不同的数据
- ssl - OpenSSL 和 CAPI - 证书冲突
- swift3 - Swift 4 迁移 - 从非协议、非类 AnyObject 继承
- node.js - 使用“node --inspect-brk index.js”时如何查找节点的源文件