我正在尝试使用带有react和es6的chart.js条形图。
当我使用import
代替require
时,我的项目看起来与documentation on GitHub略有不同。
以下是我的项目示例:
import React from 'react';
import { BarChart } from 'react-chartjs';
class HelloChart extends React.Component {
constructor() {
super();
let data = {
labels: ["January", "February", "March", "April", "May", "June", "July"],
datasets: [{
label: "My First dataset",
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'rgba(255,99,132,1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1,
data: [65, 59, 80, 81, 56, 55, 40],
}]
};
let options = {
scales: {
xAxes: [{
stacked: true
}],
yAxes: [{
stacked: true
}]
}
};
this.state = {
chartData: data,
chartOptions: options,
};
}
render() {
let chartData = this.state.chartData;
let chartOptions = this.state.chartOptions;
return (
<div>
<BarChart data={chartData} options={chartOptions} width="600" height="250" />
</div>
)
}
}
export default HelloChart
这是我在我的控制台中遇到的两个错误:
Warning: React.createElement: type should not be null, undefined, boolean, or number. It should be a string (for DOM elements) or a ReactClass (for composite components). Check the render method of
{HelloChart {1}}
而且......
.
{HelloChart {1}}
答案 0 :(得分:3)
这可以解决您的问题:
const BarChart = require("react-chartjs").Bar;
或,
import { Bar as BarChart } from 'react-chartjs';
试试这个:
import React from 'react';
const BarChart = require('react-chartjs').Bar;
class HelloChart extends React.Component {
constructor() {
super();
const data = {
labels: ["January", "February", "March", "April", "May", "June", "July"],
datasets: [{
label: "My First dataset",
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'rgba(255,99,132,1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1,
data: [65, 59, 80, 81, 56, 55, 40],
}]
};
const options = {
scales: {
xAxes: [{
stacked: true
}],
yAxes: [{
stacked: true
}]
}
};
this.state = {
chartData: data,
chartOptions: options,
};
}
render() {
const { chartData, chartOptions } = this.state;
return (
<div>
<BarChart data={chartData} options={chartOptions} width="600" height="250" />
</div>
)
}
}
export default HelloChart;