已经实现了几个图表,我们希望在每次按下按钮时动态输出一个新图表。但是,它说无法绘制图表,因为当前存在一个具有特定ID的图表。我如何解决这些错误?有没有办法在不破坏已实现图表的情况下修复错误?下面是我的代码。
const main = () =>
{
const [count, setCount] = useState([])
const addWidget = () =>
{
setCount([...count, data])
}
const data=
{
labels: ['1', '2', '3', '4', '5', '6', '7' , '8', '9','10'],
datasets: [
{
type: 'line',
label: 'Dataset 1',
borderColor: 'rgb(54, 162, 235)',
borderWidth: 2,
data: [30, 9, 24, 50,-20,20, 17, 45, 49],
}
],
}
return (
<div>
// chart test code
<Chart data = {Line_data1} options={options} style={{ position: "relative"}}/>
<Chart data = {Bar_data} options={Bar_mutilLabel_options} style={{ position: "relative"}}/>
{count.map(el => <><div><Chart style={{width:'10%'}} options={options} data={el}/></div></>)}
<button onClick={addWidget}>
Click me
</button>
</div>
)
}
1条答案
按热度按时间iyr7buue1#
看看react-chartjs-2' issues中的这个线程。特别是MartinP-C的评论。
我收到了这个错误(在React 18.0.1中,在严格模式下再次出现),删除严格模式可以停止错误(因为在开发模式下,严格模式会两次调用生命周期函数?因此可以重用画布?https://reactjs.org/docs/strict-mode.html#detecting-unexpected-side-effects)
然而!Strict Mode本身并不是问题所在。我没有注册Chart.JS组件,而抛出的错误(“”arc”不是已注册的元素“)一定是导致React两次调用并尝试重用画布。
修复注册的元素错误也停止了“Canvas already in use”错误。(注册组件:https://react-chartjs-2.js.org/docs/migration-to-v4#tree-shaking)