【发布时间】:2020-05-06 14:29:48
【问题描述】:
在我的App 组件中,我有两个组件Navbar 和View。在我的Navbar 组件中,我有一个ExportButton 组件,onClick 应该通过传递它的引用来生成View 组件的屏幕截图。
App.js
function App() {
const view = useRef();
return (
<div className="App">
<Navbar takeSnap={view}/>
<View ref={view}/>
</div>
);
}
Navbar.js
const Navbar = ({ takeSnap }) => {
return (
<>
<Lists />
<ExportButton takeSnap={takeSnap} />
</>
);
};
Button.js
const ExportButton = ({ takeSnap }) => {
function handleClick(takeSnap) {
domtoimage.toBlob(takeSnap.current, {}).then(function (blob) {
saveAs(blob, "myImage.png");
});
}
return (
<Button onClick={() => handleClick(takeSnap)} />
);
};
我在传递View 的引用以使用库 dom-to-image 截屏时遇到了一些问题。错误说“未捕获(承诺中)TypeError:无法读取未定义的属性'cloneNode'
在 makeNodeCopy”。这可能是一个快速修复,但我不确定我哪里出错了。
【问题讨论】:
-
View是否在进行任何 ref 转发?我假设domtoimage需要一个DOM 元素,而不是组件引用。见reactjs.org/docs/forwarding-refs.html
标签: javascript reactjs ref