Javascript ReactJS/D3-使用。在使用D3的不同组件上选择All
我需要从另一个组件上的Javascript ReactJS/D3-使用。在使用D3的不同组件上选择All,javascript,reactjs,d3.js,Javascript,Reactjs,D3.js,我需要从另一个组件上的d3代码中获取一些元素,我不知道如何做到这一点 我不确定我是否正确地处理了这个问题,但这是我到目前为止得到的 在我的helpers.tsx上,我有这个 const createStack = ( chart: d3.Selection<SVGGElement, unknown, null, undefined>, dataset: Dataset[], stackSeries: d3.Series< { [key: stri
d3
代码中获取一些元素,我不知道如何做到这一点
我不确定我是否正确地处理了这个问题,但这是我到目前为止得到的
在我的helpers.tsx上,我有这个
const createStack = (
chart: d3.Selection<SVGGElement, unknown, null, undefined>,
dataset: Dataset[],
stackSeries: d3.Series<
{
[key: string]: number
},
string
>[],
area: d3.Area<[number, number]>,
line: any
) => {
let stack = chart.append('g').attr('class', 'stack')
let colorMap = new Map()
dataset.forEach((set) => {
colorMap.set(set.id, set.color)
})
stack
.selectAll('path')
.data(stackSeries)
.enter()
.append('path')
.attr('class', css.stack)
.attr('fill', (d: any) => {
return colorMap.get(d.key) + '30'
})
.attr('d', (d: any) => area(d))
chart
.append('g')
.selectAll('path')
.data(stackSeries)
.enter()
.append('path')
.attr('class', css.line)
.attr('stroke', (d: any) => {
return colorMap.get(d.key)
})
.attr('fill', 'none')
.attr('d', (d: any) => line(d))
.on('mouseover', function (d: any, i) {
d3.select(this).style('stroke-width', '10px')
something()
console.log(d.srcElement.__data__.key)
})
.on('mouseout', function (d: any, i) {
d3.select(this).style('stroke-width', '1px')
})
}
这可能吗?我试过了,但似乎根本找不到任何元素(可能是因为我试图在元素存在之前检索它们?如果您认为这是一个生命周期问题,请为我们重现生命周期。我们不能这样评估。将您的代码缩减为a,这将帮助我们理解它可能您可以使用
.on('mouseover', function (d: any, i) {
d3.select(this).style('stroke-width', '10px')
something()
console.log(d.srcElement.__data__.key)
})
.on('mouseout', function (d: any, i) {
d3.select(this).style('stroke-width', '1px')
})