Highcharts 不渲染:React+Typescript+Highcharts
Highcharts not rendering : React+Typescript+Highcharts
正在尝试使用 React 调出图表。我有多个 fetch api 调用(为了说明,我只添加了 2 个),我将使用其数据在 UI.
中呈现某些内容
本例中data1用于渲染table,data2用于渲染highchart
我将这些调用的输出存储在状态对象中。当我调用这些 API 时,我正在获取数据但无法将其设置为 "series" 属性 的 highcharts 进行渲染,结果没有渲染任何内容。
我正在获取的数据的结构
"api2" : [
{
"name" : "Test1",
"value" : 12
},
{
"name" : "Test2",
"value":9
}
]
有人可以帮我解决这个问题吗?我哪里错了?
我正在为此使用 highcharts-react-official
代码
import * as React from 'react';
import Highcharts from 'highcharts'
import HighchartsReact from 'highcharts-react-official';
interface IState {
data1: [];
data2: [];
}
interface IProps {}
class Example extends React.Component<IProps,IState> {
constructor(props:any)
{
super(props);
this.state = {
data1: [],
data2: []
}
}
componentDidMount()
{
Promise.all([
fetch('http://localhost:3001/api1'),
fetch('http://localhost:3001/api2')
])
.then(([res1, res2]) => Promise.all([res1.json(), res2.json()]))
.then(([data1, data2]) => this.setState({
data1: data1,
data2: data2
}));
}
render() {
let options:any;
options = {
chart: {
type: 'column'
},
credits: false,
exporting: {enabled: false},
title: {
text: ''
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'bottom'
},
xAxis: {
visible:false
},
yAxis: {
visible:false
},
plotOptions: {
column: {
dataLabels: {
enabled: true }
}
},
series: this.state.data2
};
return(
<div className="an-content">
//some table rendering will happen here
<HighchartsReact
highcharts={Highcharts}
options={options}
/>
</div>
)
}
}
export default Example;
您需要提供Highcharts要求的数据格式:
this.setState({
data2: data2.map(x => ({ name: x.name, data: [x.value] }))
});
现场演示:https://codesandbox.io/s/7w2pw4p900
API参考:https://api.highcharts.com/highcharts/series.column.data
正在尝试使用 React 调出图表。我有多个 fetch api 调用(为了说明,我只添加了 2 个),我将使用其数据在 UI.
中呈现某些内容本例中data1用于渲染table,data2用于渲染highchart
我将这些调用的输出存储在状态对象中。当我调用这些 API 时,我正在获取数据但无法将其设置为 "series" 属性 的 highcharts 进行渲染,结果没有渲染任何内容。
我正在获取的数据的结构
"api2" : [ { "name" : "Test1", "value" : 12 }, { "name" : "Test2", "value":9 } ]
有人可以帮我解决这个问题吗?我哪里错了?
我正在为此使用 highcharts-react-official
代码
import * as React from 'react';
import Highcharts from 'highcharts'
import HighchartsReact from 'highcharts-react-official';
interface IState {
data1: [];
data2: [];
}
interface IProps {}
class Example extends React.Component<IProps,IState> {
constructor(props:any)
{
super(props);
this.state = {
data1: [],
data2: []
}
}
componentDidMount()
{
Promise.all([
fetch('http://localhost:3001/api1'),
fetch('http://localhost:3001/api2')
])
.then(([res1, res2]) => Promise.all([res1.json(), res2.json()]))
.then(([data1, data2]) => this.setState({
data1: data1,
data2: data2
}));
}
render() {
let options:any;
options = {
chart: {
type: 'column'
},
credits: false,
exporting: {enabled: false},
title: {
text: ''
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'bottom'
},
xAxis: {
visible:false
},
yAxis: {
visible:false
},
plotOptions: {
column: {
dataLabels: {
enabled: true }
}
},
series: this.state.data2
};
return(
<div className="an-content">
//some table rendering will happen here
<HighchartsReact
highcharts={Highcharts}
options={options}
/>
</div>
)
}
}
export default Example;
您需要提供Highcharts要求的数据格式:
this.setState({
data2: data2.map(x => ({ name: x.name, data: [x.value] }))
});
现场演示:https://codesandbox.io/s/7w2pw4p900
API参考:https://api.highcharts.com/highcharts/series.column.data