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 ?
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