reactjs - 反应合成事件奇怪的行为
问题描述
我已经搜索了其他答案,这个最接近我正在处理的问题。
但我的问题仍然存在。我无法访问合成事件的属性。喜欢shiftKey
在某些情况下,我使用的是与 react-d3-tree 库一起打包的 onClick 处理程序
我以为只是这个库引起了问题。但是在单击处理程序中,我可以将事件打印到控制台,并且可以看到shiftKey
参数已按预期设置。但是每次我尝试访问时event.shiftKey
都会收到错误消息:
index.js:1452 警告:出于性能原因,此合成事件被重用。如果您看到这一点,则表示您正在访问已发布/无效合成事件的属性 `shiftKey`。这设置为空。如果您必须保留原始合成事件,请使用 event.persist()。
请参阅我的代码示例。
更新:回购以复制问题https://github.com/mwilde345/reactBrokenClick
解决方案
不应依赖对象在控制台中出现的方式。对象在 JavaScript 中通过引用传递。如果对象内部在某个时候更新,它们将在控制台中更新。
persist()
创建事件对象的副本,因此在调用它时它应该作为快照出现在控制台中。出现问题persist()
意味着它出了问题。
该问题是由第三方组件引起的,Tree
来自react-d3-tree
. 事件对象是异步使用的,persist()
在用户代码中不会有理想的结果,而是persist()
应该在Tree
组件中同步调用。
推荐阅读
- jenkins - Jenkins 管道中 .yml 和 .groovy 文件之间的区别
- python - python日志模块跳过一些日志,不写入文件
- amazon-redshift - 我可以继续使用 Aginity Workbench 进行红移吗
- apache-spark - 如何以 JSON 格式转换 debezium 消息,以便可以将其加载到 Redshift
- azure-cosmosdb - Gremlin:CosmosDB Gremlin API 中 otherV 的替代方案
- spring - Spring JMS - IBM MQ MessagePutOptions
- excel - 使用 VBA 对多个工作簿求和,无需手动选择
- javascript - AJAX 请求未调用 python-flask 方法
- amazon-web-services - Aws 储蓄计划改变承诺
- r - 如何在气泡图中绘制 vendiagram 元素?