我正在尝试从charts.js图表创建一个.png图像。
下面是我们讨论的代码片段:
const DSampleChart = () => {
let ref = useRef(null);
const downloadImage = useCallback(() => {
const link = document.createElement("a");
link.download = "chart.png";
link.href = ref.current.toBase64Image();
link.click();
}, []);
return (
<div>
<button type="button" onClick={downloadImage}>
Download
</button>
<div>
<WbrChart ref={ref} data={chartonedata} />
</div>
</div>
);
};
它在抱怨toBase645Image()
,但我认为这是因为ref.current
是空的。ref是空的,因为它是在函数中引用的,显然,你不能在函数中使用ref
?
警告:功能组件不能被指定参考。尝试访问此引用将失败。你的意思是使用React.forwardRef()吗?
但我不熟悉forwardRef
,最后越碰越乱。
Here is a sandbox给你玩。
1条答案
按热度按时间zbdgwd5y1#
在JSX中,默认情况下只有官方标签可以接受
ref
属性。组件必须由forwardRef
函数创建才能接受ref
属性。下面是你应该做的
WbrChart
使其工作:现在,你可以像之前那样传递
ref
prop:你也可以在我的克隆代码沙箱中检查和测试它:https://codesandbox.io/s/damp-tdd-wnqnd5?file=/src/App.js