Javascript 警告:由于性能原因,此合成事件被重用
有人能解释一下为什么我在控制台中得到这些警告,当我尝试拖动时,以及如何解决它吗 //主要成分Javascript 警告:由于性能原因,此合成事件被重用,javascript,reactjs,console,warnings,Javascript,Reactjs,Console,Warnings,有人能解释一下为什么我在控制台中得到这些警告,当我尝试拖动时,以及如何解决它吗 //主要成分 handleDragStart=data=>event=>{ 日志(“dataaa”,数据,“事件”,事件); }; makebox=()=>{ 返回此.state.box.map(box=>( )); }; render(){ 返回{this.makebox()}; }在您的BoxesGroup中,我编辑了handleDrag函数,如下所示来解决此问题: handleDragStart = da
handleDragStart=data=>event=>{
日志(“dataaa”,数据,“事件”,事件);
};
makebox=()=>{
返回此.state.box.map(box=>(
));
};
render(){
返回{this.makebox()};
}
在您的BoxesGroup中,我编辑了handleDrag
函数,如下所示来解决此问题:
handleDragStart = data => event => {
event.persist();
event.dataTransfer.setData("text", event.target.id);
console.log("data", data, "event ", event);
};
这是来自React:
如果希望以异步方式访问事件属性,则
应该对事件调用event.persist(),这将删除
池中的合成事件,并允许创建对该事件的引用
由用户代码保留
默认情况下,react有一个事件池,它会继续使用它们。(类似于线程池)。为了避免在使用事件后将其放回池中,可以调用
event.persist()
请将代码放入您的问题中。谢谢@Kinck,我知道这种方式,但我认为这应该在没有事件的情况下工作。persist()因为此函数handleDragStart不是异步函数。React在执行事件处理程序后立即使合成事件的属性为空。因为react已经用它的合成事件包装了dom事件。很难说出完整的性质。检查这个[