L'état dans useImperativeHandle n'est pas persistant
P粉786800174
P粉786800174 2024-04-01 00:20:12
0
1
376

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粉786800174
P粉786800174

répondre à tous(1)
P粉674999420

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal