javascript - 在我的 React.js 应用程序中导入 D3.js 库时出错

标签 javascript reactjs d3.js react-redux components

我遇到了关于在我的 react.js 应用程序中正确导入 d3.js 库的问题。我正在使用 import * as d3 from 'd3' 来导入所有内容并将其保存到 d3 命名空间,但收到一个名为 - Cannot read property 'category20' of undefined 的错误。关于这个问题有什么帮助吗?

单击此处查看 => Demo

import React from "react";
import * as d3 from "d3";
import donut from "./d3.donut.jsx";
import { render } from 'react-dom';

class PieCharts extends React.Component {
  constructor(props) {
    super(props);
  }
  componentDidMount() {
    let self = this;
    //let PieData=this.props.data;
    var getData = function() {
      var size = 4;
      var data = {};
      var text = "";
      for (var i = 0; i < size; i++) {
        data["data-" + (i + 1)] = Math.round(Math.random() * 100);
        text += "data-" + (i + 1) + " = " + data["data-" + (i + 1)] + "<br/>";
      }
      d3.select("#data").html(text);
      return data;
    };

    var chart = donut()
      .$el(d3.select("#" + self.props.id))
      .data(getData())
      .render();
  }

  render() {
    //console.log(this.props.data)
    return (
      <div>
        <div id={this.props.id} />
        <button className="btn btn-primary" onClick={this.props.clickActivity}>
          Simulate
        </button>
      </div>
    );
  }
}

render(<PieCharts />, document.getElementById('root'));

最佳答案

语法错误。您正在使用 d3 v5,因此您需要遵循更新后的语法

Use d3.scaleOrdinal(d3.schemeCategory20) instead of d3.scale.category20().
Use d3.pie instead of d3.layout.pie
Use d3.arc() instead of d3.svg.arc()

关于javascript - 在我的 React.js 应用程序中导入 D3.js 库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53405538/

相关文章:

javascript - 尝试理解 JavaScript eval 的输出,它进行字符串解析

javascript - 单选按钮未正确验证

javascript - 如何更改 anchor 标记的属性值

javascript - 获取选择周围的 DOM 节点

javascript - 使用扩展运算符更改 React 组件的样式?

javascript - React Router V4 正在更新 URL,但不刷新页面

javascript - 使元素内的按钮可点击,同时元素本身也可点击

java - 如何在D3.js中选择多个节点并将它们发送到Servlet

javascript - d3 - 如何在数组上设置动画

javascript - 使用套索访问选定的点