我有一个简单的散点图使用ChartJS与React。散点图通常有能力连接线之间的单一数据点设置选项'showLine'在数据集中。我想有一个按钮来切换这个选项(打开/关闭showLines)。不幸的是,这不工作。
如果showLines在initalDataSet中为true,则将其更改为false不会执行任何操作。如果showLines在initalDataSet中为false,则将其更改为true会导致ChartJS崩溃,并显示以下错误:
Uncaught TypeError: line is null
这是所描述问题的一个简单示例:
import React, {
useEffect,
useReducer,
} from "react";
import { Scatter } from "react-chartjs-2";
import Chart from "chart.js/auto";
const initalDataSet = {
datasets: [
{
label: "dataset1",
data: [
{
x: 1,
y: 10,
},
{
x: 3,
y: 15,
},
{
x: 5,
y: 5,
},
{
x: 7,
y: 8,
},
],
borderColor: "red",
showLine: false,
},
{
label: "dataset2",
data: [
{
x: 2,
y: 4,
},
{
x: 4,
y: 6,
},
{
x: 6,
y: 12,
},
{
x: 8,
y: 18,
},
{
x: 10,
y: 10,
},
{
x: 12,
y: 15,
},
{
x: 14,
y: 5,
},
{
x: 16,
y: 8,
},
],
borderColor: "blue",
showLine: false,
},
],
};
const processData = (state, action) => {
switch (action.type) {
case "TOGGLE_LINE":
return {
['datasets']: state.datasets.map((item) => ({
...item,
showLine: (!item['showLine']),
})),
};
default:
return state;
}
};
function App() {
const [plotData, dispatch] = useReducer(processData, initalDataSet);
useEffect(() => {
console.log("debug --->", { datasets: Object.values(plotData) });
}, [plotData]);
return (
<div className="App">
<header className="App-header">
<button
onClick={() => {
dispatch({ type: "TOGGLE_LINE" });
}}
>
Toggle Line View
</button>
<Scatter data={plotData} />
</header>
</div>
);
}
export default App;
我想一定是ChartJS组件的重新呈现问题,但是我不知道怎么解决,有人知道怎么解决吗?
谢谢你!
1条答案
按热度按时间zfycwa2u1#
可以在here中找到此错误的可能解决方案/变通方法。