¿Es correcto que useEffect esté escuchando el contexto?
const { data, } = useContext(AuthContext); async function getProfile() { try { setLoading(true); console.info('getProfile called', data.token); const response = await getByToken(data.token); if (response && response.ok) { setFirstName(response.userData.firstName); setLastName(response.userData.lastName); setEmail(response.userData.email); } } catch (e) { console.info('Error', e); } finally { setLoading(false); } } useEffect(() => { if (data.userData) { getProfile(); } }, [data.userData]);Esta es la forma que encontré para hacer llamadas a getProfile con un userData diferente de nulo
Sí, así es como funciona. Aunque podría ser incorrecto decir que useEffect está escuchando cambios en la variable. La devolución de llamada dentro de useEffect se ejecuta debido a que se cumplen 2 condiciones:
La representación se debe a que el valor del contexto ha cambiado y el componente interno es un consumidor del Context (porque llama a useContext). Y dado que la dependencia incluida en la matriz de dependencia useEffect también cambia, se ejecuta la devolución de llamada.
Un enlace sandbox con un ejemplo simple