Im trying to use chartjs in my react project but it doesnt work. What am i doing wrong?
You can see console logs here:
import styled from "styled-components";
import { Bar } from "react-chartjs-2";
const WeatherChart = () => {
return (
<Container>
<Bar
data={{ labels: ["Red", "Blue"] }}
width={100}
height={50}
options={{ maintainAspectRatio: false }}
/>
</Container>
);
};
const Container = styled.section`
height: 50%;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
`;
export default WeatherChart;Advertisement
Answer
The attributes you’re passing to Bar are incorrect. Specifically, your data attribute is missing its own datasets attribute, as can be seen in the error log when Chart.js is attempting to call setDatasets.
Suppose you’re charting the temperature for each day of the past week:
Your labels attribute:
const labels = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
Your data attribute:
const data = {
labels,
datasets: [
{
label: 'Temperatures',
data: labels.map(() => Math.random() * 100),
backgroundColor: 'rgba(255, 99, 132, 0.5)',
},
],
}
Your options attribute:
const options = {
responsive: true,
plugins: {
legend: {
position: 'top',
},
title: {
display: true,
text: 'Chart.js Bar Chart',
},
},
}
Pass them to the Bar:
return <Bar options = {options} data = {data} />
Your chart:
Learn more and see more examples in the docs.
