将数据从 JSON 传递到 React 组件 Apexchart 时间线
Passing data from JSON to React component Apexchart timeline
我正在使用 Apex Chart 创建时间线。我想从 JSON 动态加载数据。您可以通过硬编码数据 here.
查看它的外观
我的 data.json 看起来像这样:
[{
"name": "Booked",
"data": [
{
"x": "Lady Gita",
"y": [
"new Date('2019-03-05').getTime(),",
"new Date('2019-03-08').getTime()"
]
}
]
},
{
"name": "Option",
"data": [
{
"x": "Ardura",
"y": [
"new Date('2019-03-10').getTime(),",
"new Date('2019-03-17').getTime()"
]
}
]
}]
我也试过这样定义 y:
"new Date('2019-03-05').getTime(), new Date('2019-03-08').getTime()"
像这样:
"new Date('2019-03-05').getTime()"
"new Date('2019-03-08').getTime()"
我的代码如下所示:
import React, { useState, Component } from 'react';
import ReactApexChart from "react-apexcharts";
import "./TimelineChart.css";
import data from "./pages/data.json";
const newData = data;
//I also tried:
//JSON.parse(newData);
//But the my timeline doesnt even show
class ApexChart extends Component {
constructor(props) {
super(props);
this.state = {
series: [],
options: {
chart: {
height: 450,
type: 'rangeBar'
},
plotOptions: {
bar: {
horizontal: true,
barHeight: '80%'
}
},
xaxis: {
type: 'datetime'
},
stroke: {
width: 1
},
fill: {
type: 'solid',
opacity: 0.6
},
legend: {
position: 'top',
horizontalAlign: 'left'
}
},
};
};
render() {
return (
<div className="app">
<div className="row">
<div className="mixed-chart">
<ReactApexChart
options={this.state.options}
series={newData}
type="rangeBar"
height="350"
/>
</div>
</div>
</div>
);
}
}
console.log(newData);
export default ApexChart;
我的控制台输出如下所示:
我的图表是这样的:
如您所见,图表上确实显示了我的“姓名”和“x”值,但没有日期范围
这个 JSON 中的新日期应该是 Unix 时间戳。
"y": [
"new Date('2019-03-05').getTime(),",
"new Date('2019-03-08').getTime()"
]
您可以将日期和时间转换为 Unix 时间戳here
转换格式后应该如下所示:
"y": [
1551744000000,
1552003200000
]
详细说明 所说的内容。
你的第二张截图有
"y": ["new Date('2019-03-05').getTime()"]
如果正在生成数据文件(由您控制),您需要将生成 y
道具的代码更改为此
y = [new Date('2019-03-05').getTime()]
请注意缺少双引号(因为 new Date
是一个函数调用,您希望在数组中分配该函数调用的结果)。
如果您的 JSON 没有生成,您需要的是带有硬编码字符串值的 vice-radica 响应。
我正在使用 Apex Chart 创建时间线。我想从 JSON 动态加载数据。您可以通过硬编码数据 here.
查看它的外观我的 data.json 看起来像这样:
[{
"name": "Booked",
"data": [
{
"x": "Lady Gita",
"y": [
"new Date('2019-03-05').getTime(),",
"new Date('2019-03-08').getTime()"
]
}
]
},
{
"name": "Option",
"data": [
{
"x": "Ardura",
"y": [
"new Date('2019-03-10').getTime(),",
"new Date('2019-03-17').getTime()"
]
}
]
}]
我也试过这样定义 y:
"new Date('2019-03-05').getTime(), new Date('2019-03-08').getTime()"
像这样:
"new Date('2019-03-05').getTime()"
"new Date('2019-03-08').getTime()"
我的代码如下所示:
import React, { useState, Component } from 'react';
import ReactApexChart from "react-apexcharts";
import "./TimelineChart.css";
import data from "./pages/data.json";
const newData = data;
//I also tried:
//JSON.parse(newData);
//But the my timeline doesnt even show
class ApexChart extends Component {
constructor(props) {
super(props);
this.state = {
series: [],
options: {
chart: {
height: 450,
type: 'rangeBar'
},
plotOptions: {
bar: {
horizontal: true,
barHeight: '80%'
}
},
xaxis: {
type: 'datetime'
},
stroke: {
width: 1
},
fill: {
type: 'solid',
opacity: 0.6
},
legend: {
position: 'top',
horizontalAlign: 'left'
}
},
};
};
render() {
return (
<div className="app">
<div className="row">
<div className="mixed-chart">
<ReactApexChart
options={this.state.options}
series={newData}
type="rangeBar"
height="350"
/>
</div>
</div>
</div>
);
}
}
console.log(newData);
export default ApexChart;
我的控制台输出如下所示:
我的图表是这样的:
如您所见,图表上确实显示了我的“姓名”和“x”值,但没有日期范围
这个 JSON 中的新日期应该是 Unix 时间戳。
"y": [
"new Date('2019-03-05').getTime(),",
"new Date('2019-03-08').getTime()"
]
您可以将日期和时间转换为 Unix 时间戳here
转换格式后应该如下所示:
"y": [
1551744000000,
1552003200000
]
详细说明
你的第二张截图有
"y": ["new Date('2019-03-05').getTime()"]
如果正在生成数据文件(由您控制),您需要将生成 y
道具的代码更改为此
y = [new Date('2019-03-05').getTime()]
请注意缺少双引号(因为 new Date
是一个函数调用,您希望在数组中分配该函数调用的结果)。
如果您的 JSON 没有生成,您需要的是带有硬编码字符串值的 vice-radica 响应。