我是新手,将D3与React一起使用。我的反应应用程序是由create-react-app创建的。
在我的react组件中,我使用import * as d3 from 'd3'
我的代码如下:
this.xScale = d3.time.scale()
.domain(d3.extent(this.props.data, function (d) {
return d[_self.props.xData];
}))
.rangeRound([0, this.w]);
this.yScale = d3.scale.linear()
.domain([0,d3.max(this.props.data,function(d){
return d[_self.props.yData]+_self.props.yMaxBuffer;
})])
.range([this.h, 0]);
this.area = d3.svg.area()
.x(function (d) {
return this.xScale(d[_self.props.xData]);
})
.y0(this.h)
.y1(function (d) {
return this.yScale(d[_self.props.yData]);
}).interpolate(this.props.interpolations);
得到了编译错误:
'd3'中未找到导出'时间'(导入为'd3')
我在项目目录下使用npm install d3 --save
导入d3。
任何人都有想法是什么问题?
答案 0 :(得分:8)
你正在使用D3 v4。以下链接是您将旧版本转换为现在使用的版本的解决方案,应该是直接的。
答案 1 :(得分:0)
使用d3.timeScale()代替d3.time.scale()
D3.js语法在版本4中进行了更改,因此不再使用d3.time。
您要么需要导入d3.js版本3
npm install d3@3
或更改您的代码以使用d3.js版本4语法
d3.timeScale();
答案 2 :(得分:0)
从版本4开始,您必须使用 d3。 scaleTime()