未捕获的类型错误:无法读取 null 的属性(读取“标签”)
2022-07-22
990
我正在尝试使用 chartjs 构建一个 LineChart,但是遇到了一些错误,我无法判断错误来源,数据已根据需要从服务器传输,并且(根据日期和 coinValue)拆分得很好。 知道问题是什么吗?
错误如下:
这是我的代码:
import { Link } from "react-router-dom";
import { Line } from "react-chartjs-2";
import {Chart as chartjs, Title, Tooltip, LineElement, Legend, CategoryScale, LinearScale, PointElement} from "chart.js";
chartjs.register(
Title, Tooltip, LineElement, Legend, CategoryScale, LinearScale, PointElement
)
function BitCoin() {
const [data, setData] = React.useState(null);
const [dates, setDates] = React.useState(null);
const [coinValue, setCoinValue] = React.useState(null);
const [chartData, setChartData] = useState(null);
React.useEffect(() => {
fetch("http://localhost:3001/bitcoin")
.then((res) => res.json())
.then((data) => {
const twoDimensionArr = data.message;
setData(twoDimensionArr);
setDates(twoDimensionArr.map(item => item[0]));
setCoinValue(twoDimensionArr.map(item => item[1]));
setChartData({
labels: twoDimensionArr.map(item => item[0]),
datasets: [{
label: "value of BTC in ILS",
data: twoDimensionArr.map(item => item[1]),
backgroundColor: 'gold'
}]
})
})
}, []);
return (
<div style={{textAlign:"center", fontFamily:"Comic Sans MC", fontSize:"100"}}>
THIS IS THE BitCoin PAGE
<nav>
<Link to="/"> Home </Link>
</nav>
<nav>
<Link to="/coins"> Coins </Link>
</nav>
<Line
data = {chartData}
/>
</div>
)
}
export default BitCoin;
2个回答
这是因为您将
null
传递给了 Line 组件。
您需要使用空状态初始化数据,或者有条件地渲染 Line。
初始状态:
const [chartData, setChartData] = useState({
labels: [],
datasets: [{
data: []
}]
});
有条件渲染:
{chartData !== null && <Line data={chartData}/>}
Jacco Berg
2022-07-22
不熟悉该图表库,但我猜测它在 API 调用返回异步数据之前出错了。我会尝试创建有效的未初始化数据以在初始渲染时提供给 Line 组件,或者干脆阻止图表加载,直到数据返回。您可以使用以下方法检查这是否是您的问题:
{chartData && <Line
data = {chartData}
/>
}
Chris B.
2022-07-22