【发布时间】:2023-01-20 09:03:29
【问题描述】:
我有一个 react-chart-js2 组件,我试图在填充上制作渐变,但是我遇到了一些不同的打字稿错误,似乎无法让它工作。
文档说将数据道具作为函数传递给画布,以便访问画布上下文以添加渐变。不幸的是,这是行不通的。
这是文件的代码和框:https://codesandbox.io/s/modest-bird-j2in8(文件 LineChartGradient.tsx)
我遇到的错误围绕着 Canvas 上下文并将数据函数传递给 chartjs 组件
数据
const data = (canvas: HTMLCanvasElement) => {
const ctx = canvas.getContext("2d");
const gradient = ctx.createLinearGradient(0, 0, 0, 200);
gradient.addColorStop(0, "rgba(250,174,50,1)");
gradient.addColorStop(1, "rgba(250,174,50,0)");
return {
labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun"],
datasets: [
{
label: "First dataset",
data: [33, 53, 85, 41, 44, 65],
fill: "start",
backgroundColor: "rgba(75,192,192,0.2)",
borderColor: "rgba(75,192,192,1)"
},
{
label: "Second dataset",
data: [33, 25, 35, 51, 54, 76],
fill: "start",
borderColor: "#742774"
}
]
};
};
成分
return (
<div>
<Line data={data} options={options} />
</div>
);
错误#1
const gradient = ctx.createLinearGradient(0, 0, 0, 200);
打字稿说这个对象可能是空的,这很好,我可以检查它是否存在,但这是我的第一个线索,即画布元素未被传递
错误 #2
<Line data={data} options={options} />
类型 '(canvas: HTMLCanvasElement) => { labels: string[]; 中缺少属性 'datasets'数据集:
当将数据作为函数传递时,我会收到此错误,但是如果我只是将数据函数返回的对象放在数据道具内,则图形可以正常呈现(请参阅 LineChart.tsx)。
在 react-chartjs-2 中访问画布上下文以添加渐变填充的正确方法是什么?
【问题讨论】:
标签: reactjs canvas chart.js react-chartjs-2