【发布时间】:2020-07-14 08:25:35
【问题描述】:
我想根据上下文提供者中的一个状态变量来显示一个组件。当我加载此页面时,显示已关闭(fullRender 最初为 false)。单击按钮显示它,我在 dom 中看到了画布。当我单击“删除”按钮时,我在上下文中调用 removeFullRender 再次将其设置为 false。
const launchRender = () => {
setFullRender(true);
}
const removeFullRender = () => {
setFullRender(false);
}
一旦我这样做,react 崩溃(= 显示白页并在 react-dom.development.js 中引发错误)NotFoundError: Node was not found 而不是再次显示关闭的 div。
完整的渲染组件:
const FullRender = (props) => {
const context = useContext(FabricContext);
const [canvas, setCanvas] = useState();
useEffect(() => {
if(!context.fullRender){
return
}
setCanvas(new fabric.Canvas("full-canvas", {
selection: false,
}));
console.log(context.fullRender);
}, [context.fullRender]);
return (
<>
{context.fullRender ?
<>
<canvas
style={props.style}
id="full-canvas"
>
</canvas>
<Button onClick={context.removeFullRender}>X</Button>
</>
: <div>closed</div>
}
</>
);
}
【问题讨论】:
标签: javascript reactjs