d3.js - d3 v4 + react + ES6 : How to create axis programmatically?

标签 d3.js reactjs ecmascript-6

我正在尝试了解当前版本 4 中的 d3。具体来说:我尝试在 React 和 es6 中为简单的折线图创建 x 轴。

我看过 Mike Bostock 的例子以及他是如何做到的:

svg.append("g")
.attr("class", "axis axis--x")
.attr("transform", "translate(0," + height + ")")
.call(d3.axisBottom(x));

但这既不是 React 也不是 ES6。

在另一个网站上我看到了以下变体:

renderAxis() {
  var node  = this.refs.axis;
  var axis = d3.svg.axis().orient(this.props.orient).ticks(5).scale(this.props.scale);
  d3.select(node).call(axis);
}

render() {
  return <g className="axis" ref="axis" transform={this.props.translate}></g>
}

这是 React 和 ES6,但不是版本 4 中的 d3。

我可以尝试将版本 3 的代码采用到 d3 的版本 4,但是: d3.select 让我非常困扰。当我使用 React (或其中的其他库,如 d3)时,我不想进行 DOM 调用。 React 应该用于以最有效的方式渲染到 DOM 中,而不是获取 DOM 节点。

所以,我的问题是: 创建一个简单的 x 轴的 react 方式是什么?或者,如果还没有这样的答案:采用 Mike Bostock 引用的代码的 react 方式是什么?

最佳答案

经过几年尝试在 React 中找出 d3,这是我和我的团队发现的制作坐标轴的最佳方式:

const Axis = props => {
    const axisRef = axis => {
        axis && props.axisCreator(select(axis));
    };

    return <g className={props.className} ref={axisRef} />;
};

注释

关于d3.js - d3 v4 + react + ES6 : How to create axis programmatically?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38381241/

相关文章:

javascript - 了解 React.js 中的搜索过滤如何工作

javascript - 将基于类的组件重构为功能组件

javascript - es6中如何解析函数参数名称

javascript - 如果具有 id 的元素不存在,则阻止安装组件

javascript - 如何根据用户偏好过滤通过 d3.js 渲染的节点和边?

javascript - D3+Leaflet Circle SVG 元素不显示任何颜色

d3.js - D3 - 停止力图四处移动,节点应该只停留在移动的地方

javascript - D3 .bandwidth() 返回 NaN

css - 在带有 css-loader 和 Webpack 的 React 中使用字符串类名

javascript - 如何在树的下方更新 redux 状态