Maison  >  Questions et réponses  >  le corps du texte

L'état dans useImperativeHandle n'est pas persistant

Supposons que je sois dans cette situation :

const [data, setData] = useState([]);

et mettez-le à l'intérieur useImperativeHandle comme ceci :

useImperativeHandle(ref, () => ({
   data,
}));

Quand j'utilise useEffect pour savoir si l'état change comme ceci :

useEffect(() => {
   console.log(componentRef.current.data);
}, [componentRef.current.data])

Cela ne fonctionne pas, seulement si je le vérifie manuellement, comme s'il y avait un bouton onClick, il l'imprimera, sinon il n'est pas avec état. Pourquoi cela arrive-t-il? Existe-t-il un autre moyen de le faire fonctionner ? Ou est-ce le seul moyen de transférer l'État au parent ?

P粉786800174P粉786800174223 Il y a quelques jours325

répondre à tous(1)je répondrai

  • P粉674999420

    P粉6749994202024-04-01 18:22:37

    Le composant de

    useEffect 不是反应式的。它不跟踪事物。它只是比较渲染之间的依赖关系,如果有差异,它就会执行给定的回调。具有 useEffect doit re-rendre pour remplir cette fonction.

    Ce que vous pouvez faire, c'est transmettre un rappel du parent à l'enfant afin que celui-ci puisse l'appeler lorsqu'il change d'état

    répondre
    0
  • Annulerrépondre