React和d3.js - 附加事件处理程序

时间:2015-09-16 13:45:14

标签: javascript d3.js reactjs

我正在开发一个项目,使用React作为我的UI,d3使用数据viz。 UI中设置的选项会更改图表的绘制方式(边框,颜色等)。绘制图表的代码是一个单独的库,在生产中,需要能够在没有React存在的情况下绘制图表。因此,我们用于绘制图表的所有代码都来自componentDidUpdate中调用的函数。

所以,我有一个d3.js图表​​,它在React生命周期的最后得到了更新。我遇到的问题是,在一些d3.js图表​​元素的构造函数中,我附加了事件处理程序,但这些事件处理程序没有得到设置。我可以设置一个断点并进入d3代码,看看它们会被击中,但是当我尝试使用它们时,我什么也得不到。但是,我可以在componentDidUpdate中附加事件处理程序并让它们工作,但我不明白为什么事件处理程序首先被删除。单步执行代码,我可以看到事件处理程序在HTML元素出现之后才会被附加。任何方向?提前谢谢。

var EventStuff= function(explodeConfig){
              attachEventHandlers:function(){
            var self = this;
            d3.selectAll("path")
                .on("click",function(d){
                    console.log("clicked paths");
                });
        }
    }
}

我最初在componentDidMount中呈现图表,随后对UI的更改会在componentDidUpdate中呈现图表。 d3代码没有使用React的合成事件系统,当我附加事件处理程序时,HTML元素肯定存在。什么会阻止事件在我componentDidUpdate附加它们之前不被解雇?

0 个答案:

没有答案