如何使用 d3 生成 svg 客户端而不将其附加到 DOM(与 React.js 一起使用)

2024-03-10

我正在使用 React.js 构建一个应用程序,其中包含相当多的 svg 图表。我使用 d3 函数来帮助创建图表,例如比例尺,然后使用 React 生成 svg 元素。这是关于该方法的精彩文章:http://10consulting.com/2014/02/19/d3-plus-reactjs-for-charting/ http://10consulting.com/2014/02/19/d3-plus-reactjs-for-charting/

我走这条路的部分原因是为了性能——该应用程序的第一个版本太慢了。它有很多元素和很多用户交互性,全部在客户端。我正在尝试在 React 中重新创建 dc.js 库。

这是一种非常有趣且直观的方法(在我看来,比单独的 d3 更有效)。虽然构建轴很乏味,但 d3 做得很好。我希望 d3 能够输出代表轴(可能还有其他元素)的 svg 元素字符串,然后将其提供给 React 以包含在 DOM 中。

我确实看到了这个问题(如何让d3.js生成svg而不绘制它? https://stackoverflow.com/questions/20873490/how-to-make-d3-js-generate-an-svg-without-drawing-it),答案是将其附加到 DOM 中并删除它,或者创建一个 DOM 片段。这些方法与 React 方法背道而驰,并且可能会抵消 React 的性能优势。我还看到了 jsdom 和 phantomjs 解决方案,这在我的情况下不起作用。

d3 可以生成 svg 而不将其附加到 DOM 吗?


如果您使用传统方式,@Lars 是正确的。然而,这绝对是可能的 'jsdom https://github.com/tmpvar/jsdom'。该库可以模拟 DOM,还允许字符串输入。这意味着您可以将根元素注入到假 DOM 中并获取一个新的窗口元素来操作。然后,您可以使用 D3,而无需更改其源,并且使用就像正常一样。

这将允许生成 SVG。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 d3 生成 svg 客户端而不将其附加到 DOM(与 React.js 一起使用) 的相关文章

随机推荐