javascript - 使用 React 绘制 d3 轴,无需直接操作 D3 DOM

标签 javascript reactjs typescript react-native d3.js

我正在使用 d3 和 React 进行数据可视化。我尝试使用 React 来渲染,使用 d3 来进行计算。

为了绘制 X 轴,我有一个 <g>带有引用并渲染我刚刚使用的 X 轴:

const drawAxis = (graphData: graphData[], refXAxis: any, refYAxis: any, xScale: ScaleD3, yScale: ScaleD3): void => {
    let xAxis = d3.axisBottom(xScale);
    let yAxis = d3.axisLeft(yScale);
    let a = d3.select(refXAxis).call(xAxis);
    d3.select(refYAxis).call(yAxis); // so, this line manipulates DOM, I want to do *this* with react.
};

可以在 react 中做到这一点吗?方式?.

最佳答案

正如您所说,我建议您仅使用 d3 进行计算,因此仅使用 d3 来创建刻度。

您有 xScaleyScale,因此您有范围。 您可以使用 x1 = xScale.range()[0]x2 = xScale.range()[1] 创建一条简单的水平线 。与垂直轴类似,使用 yScale.range() 值。

然后您只需执行 constticks = xScale.ticks() 即可获取所有刻度值,依此类推。

这样做有一些优势:

  • 你不需要 React 中不太好的引用资料
  • 您可以根据需要控制 DOM 创建

Here一个例子

关于javascript - 使用 React 绘制 d3 轴,无需直接操作 D3 DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61148301/

相关文章:

javascript - gwt grails跨域请求

javascript - 如何使用kinetic js替换 Canvas 中的图像

javascript - 将 TypeScript 与外部 JS 文件捆绑在一起(例如 node_modules)

javascript - Meteor 账户 邮箱验证

javascript - 我是否正确理解 react 虚拟 DOM 的意义?

typescript - 如何为 SystemJS 导出 TypeScript 模块?

reactjs - 如何在 React 中为 AWS amplify GraphQL 响应设置 typescript 类型?

javascript - THREE.js:远处光源转换的阴影

javascript - querySelectorAll 请求出现错误 "Object reference chain is too long"

reactjs - 创建基础组件然后在 React 中扩展它们是一个好习惯吗?