En useState, el valor predeterminado se establece en falso y se envía al componente de inicio de sesión. Pero el componente de inicio de sesión no obtiene el valor (usuario, setUser).
import Login from "../Routes/Login"; const useAuth = () => { const [user, setUser] = useState(false); return ( <div> <Login user={user} setUser={setUser}></Login> </div> ) } export default useAuth;Cuando hago clic en el botón Iniciar sesión, aparece un error llamado "TypeError no detectado: setUser no es una función". Cuando se hace clic en el botón de inicio de sesión, quiero cambiar el valor de "usuario" de falso a verdadero.
const Login = ({ user, setUser }) => { console.log(user); return ( <div> <button onClick={() => { setUser(true) }}>Login</button> </div> ); } export default Login;No pude replicar el problema que mencionaste. Aquí está el enlace de sandbox de código a continuación: https://codesandbox.io/s/wizardly-pine-4edci7?file=/src/App.js
La convención de nomenclatura que usó para el componente useAuth es incorrecta. Por la convención de nomenclatura, parece que es un enlace personalizado, sino más bien un componente.
Por lo tanto, debe usar la siguiente convención de nomenclatura para UseAuth . Y funciona bien en el enlace Codesandbox dado anteriormente.
Nota adicional: todos los ganchos personalizados en reactjs deben tener el prefijo use palabra clave. Por lo tanto, sugeriría cambiar el nombre del componente de useAuth a solo Auth todos juntos.