如何访问useEffect以外的dom变量

问题描述 投票:0回答:1

我的画布功能组件太大。我想拆分Class StaruseEffect(初始化,动画)代码。

const Canvas = () => {
   useEffect(() => {
      const canvas = canvasRef.current;
      const context = canvas.getContext('2d');

      Class Star {
         ...
      }

      const init = () => {...};
      const animate = () => {...};
      ...
   }, [])
}

但是我对context有问题,因为Class Staranimate使用了它。 init使用canvas

reactjs html5-canvas react-hooks code-structure
1个回答
0
投票

使用useState钩子:

const Canvas = () => {
   const [canvas, setCanvas] = useState(null);
   const [context, setContext ] = useState(null);

   useEffect(() => {
      setCanvas(canvasRef.current);
      setContext(canvas.getContext('2d'));

      Class Star {
         ...
      }

      const init = () => {...};
      const animate = () => {...};
      ...
   }, [])
}
© www.soinside.com 2019 - 2024. All rights reserved.