Próbuję zainicjować bibliotekę innej firmy W hakach React używam useEffect, ale cały czas otrzymuję null Próbowałem użyć niestandardowych haków, ale otrzymałem ten sam wynik (zero)

Dowolny pomysł?

Ten mój kod https://stackblitz.com/edit/react-rg9uov

Dzięki

1
Alex Malin 7 kwiecień 2020, 17:39

2 odpowiedzi

Najlepsza odpowiedź

Twój useEffect powinien zadeklarować tablicę zależności dla ref, również nie wiesz, dlaczego użyto const stage = useRef(null);? stage może być tylko stanem komponentu.

 const [stage, setStage] = React.useState();
 const ref = useRef();

 useEffect(() => {
    if(ref.current){
      setStage(new Konva.Stage({
      container: ref.current, // id of container <div>
      width: 500,
      height: 300
    }))
    }

  },[ref]);
2
Sumedh Chakravorty 7 kwiecień 2020, 15:01

Widzisz null, ponieważ console.log działa przed useEffect, jeśli umieścisz console.log na końcu useEffect zobaczysz, że Konva jest zainicjowany poprawnie.

0
rzwnahmd 7 kwiecień 2020, 14:56