反应合成事件奇怪的行为

时间:2018-12-06 01:15:28

标签: reactjs d3.js onclick mouseclick-event react-d3

我已经搜寻了其他答案,this one最接近我要处理的内容。

但是我的问题仍然存在。我无法访问综合事件的属性。像shiftKey

在某些情况下,我使用的是onClick handler that comes packaged with react-d3-tree library

我认为这只是导致问题的库。但是在单击处理程序中,我可以将事件打印到控制台,并且可以看到shiftKey参数已按预期设置。但是每次我尝试访问event.shiftKey时都会收到错误消息:

index.js:1452警告:出于性能原因,此合成事件被重用。如果您看到此消息,那么您正在访问已发布/无效的合成事件上的属性“ shiftKey”。设置为空。如果必须保留原始的合成事件,请使用event.persist()。

请参阅我的代码示例。

更新:回购以复制问题https://github.com/mwilde345/reactBrokenClick

1 个答案:

答案 0 :(得分:0)

不应依赖对象在控制台中出现的方式。对象是通过JavaScript中的引用传递的。如果在某个时刻更新了对象内部,则它们将在控制台中更新。

persist()创建事件对象的副本,因此它在被调用时应作为快照显示在控制台中。 persist()发生了问题,这意味着它出了点问题。

该问题是由第三方组件Tree from react-d3-tree引起的。事件对象是异步使用的,用户代码中的persist()不会有理想的结果,相反,persist()组件中的Tree应该被同步调用。