d3.js React应用程序中的D3饼图悬停效果不起作用

5kgi1eie  于 2022-11-12  发布在  React
关注(0)|答案(1)|浏览(145)

我目前正在使用D3在一个React应用程序中构建一个饼图,我试图在悬停时做一个简单的不透明度变化,但无论出于什么原因,我的本地环境中没有发生这种效果。

g.selectAll('path')
    .data(pie(data))
    .enter()
    .append('path')
    .attr('fill', (data, index) => color(index))
    .attr('d', arc)
    .on('mouseover', function (event, d) {
        d3.select(this).transition()
            .duration(200)
            .attr('opacity', .5)
    })
    .on('mouseout', function (d, i) {
        d3.select(this).transition()
            .duration(200)
            .attr('opacity', 1)
    })

然而,当我把完全相同的代码放在Codepen(https://codepen.io/ddoria/pen/KKoQpOX)中时,效果就起作用了。

gab6jxml

gab6jxml1#

解决了这个问题。这是由于React 18在开发模式下引入的useEffect被调用了两次。为了解决这个问题,删除<React.StrictMode>了src/index.js中渲染调用中的标记

相关问题