TLDR: me gustaría ignorar un objeto nulo en la matriz de dependencia de useEffect
No creo que esto sea posible, pero tengo un efecto de uso que me gustaría ejecutar y que depende de currentUser.uid (básicamente, el objeto de usuario de Firebase). Esperaba tener que mantener solo una barra de menú para los estados de inicio de sesión y cierre de sesión, pero cuando se cierra la sesión, el objeto currentUser.uid es nulo, lo que provoca un TypeError para el efecto de uso. Intenté usar el operador condicional pero a) ESLint se queja de que falta una dependencia (currentUser.uid) yb) no se permiten expresiones complejas en matrices de dependencias. ¿Hay alguna manera de resolver esto correctamente, idealmente sin errores? La solución obvia, nuevamente, es usar varios archivos, uno para iniciar sesión y el otro para cerrar sesión, pero idealmente evitaría esto.
He proporcionado un código a continuación para ilustrar esto si la explicación no es clara.
useEffect(() => { function getCookie(cname) { let name = cname + '='; let ca = document.cookie.split(';'); for (let i = 0; i < ca.length; i++) { let c = ca[i]; while (c.charAt(0) === ' ') { c = c.substring(1); } if (c.indexOf(name) === 0) { return c.substring(name.length, c.length); } } return ''; } function checkCookie() { let color = getCookie('color'); if (color !== '') { console.log('Color already set'); console.log(color); setColor(color); } else { let account_data = db .collection(currentUser.uid) .doc('account'); account_data.get().then((doc) => { if (doc.exists) { setColor(doc.data().color); setCookie('color', doc.data().color, { secure: true, sameSite: 'none', }); } else { console.log('No such document!'); } }); } } checkCookie(); }, [currentUser.uid]);