【发布时间】:2017-05-02 22:59:57
【问题描述】:
我正在尝试在我的 Web 应用程序上使用 D3 呈现一个简单的条形图,该应用程序使用 React 作为其前端。
我是 D3 的新手,我正忙于在我的网页上显示条形图,所以我认为对我来说最简单的事情就是找到一个呈现简单条形图的 jsfiddle使用 D3 (http://jsfiddle.net/tommy351/P4Z75/) 并将代码复制并粘贴到我的dashboard.tsx 文件中。
注意:我选择 D3 的原因是因为其他更易于使用的图表库与 React 更顺畅地集成(即 recharts、react-d3)没有 TypeScript 定义文件。
所以,这是我的 dashboard.tsx 文件的 sn-p:
import * as React from "react";
import * as ReactDOM from "react-dom";
import * as D3 from "d3";
var data = [4, 5, 10, 16, 23, 35];
var width = 500;
var barHeight = 20;
var x = d3.scale.linear()
.domain([0, d3.max(data)])
.range([0, width]);
var chart = d3.select('#chart')
.attr('width', width)
.attr('height', barHeight * data.length);
var bar = chart.selectAll('g')
.data(data)
.enter()
.append('g')
.attr('transform', function (d, i) {
return 'translate(0,' + barHeight * i + ')';
});
bar.append('rect')
.attr('width', x)
.attr('height', barHeight - 1);
bar.append('text')
.attr('x', function (d) {
return x(d) - 3;
})
.attr('y', barHeight / 2)
.attr('dy', '.35em')
.text(function (d) {
return d;
});
render() {
return ( <div>
<svg id="chart"></svg>
</div>
);
}
}
我在控制台中遇到的错误是:
Uncaught ReferenceError: Chartjs is not defined
at Object.map../af (vendorReact.js:26748)
at __webpack_require__ (vendorReact.js:53)
at Object.<anonymous> (vendorReact.js:107)
at __webpack_require__ (vendorReact.js:53)
at vendorReact.js:96
at vendorReact.js:99
Dashboard.js:17482 Uncaught TypeError: Cannot read property 'linear' of
undefined
at Object.<anonymous> (Dashboard.js:17482)
at Object.<anonymous> (Dashboard.js:17721)
at Object.163 (Dashboard.js:17723)
at __webpack_require__ (vendorReact.js:53)
at Object.0 (Dashboard.js:17)
at __webpack_require__ (vendorReact.js:53)
at webpackJsonpCallback (vendorReact.js:24)
at Dashboard.js:1
我用许多 jsfiddles 尝试了同样的事情,并在我的控制台中得到了类似的错误,并且无法让图表呈现。知道可能是什么问题吗?
【问题讨论】:
-
你可以通过使用javascript而不是打字稿来逃脱,你的脚本甚至没有反映打字稿的功能。
-
使用 recharts(React 图表)之类的东西对我来说会更容易/更舒服,但 recharts 没有 TypeScript 定义文件。我刚刚向您展示了我的dashboard.tsx 文件的一个小sn-p,它实际上正在使用TypeScript 库/功能,它们只是没有反映在我向您展示的sn-p 中。
-
没关系,用你觉得舒服的就行。 typescript 是 javascript 的一个子集。你可以在打字稿中使用 javascript。
-
我在我的 TypeScript 中使用 JavaScript,我从 jsFiddle 的 JavaScript 中复制了所有代码。问题是所有外部 JavaScript 库都需要 TypeScript 定义文件
标签: reactjs typescript d3.js