Estoy creando una solicitud de inicio de sesión cuando hago clic en el botón de inicio de sesión y recibo un error (loginPage.js: 33 Uncaught (en promesa) TypeError: setLoginUser no es una función) aquí está el código de app.js
function App() { const [user,setLoginUser] = useState({}) return( <div className='App'> <BrowserRouter> < Routes> <Route path="/homepage" element={user && user?._id? <Homepage /> : <Login setLoginUser={setLoginUser} />}/> <Route path="/login" element={<Login />} setLoginUser={setLoginUser}/> <Route path="/register" element={<Register />} /> </Routes> </BrowserRouter> </div> ) }y aquí está el código de loginPage.js donde se produce el error
const Login = ({ setLoginUser }) => { const login = () => { axios.post("http://localhost:4000/login", user) .then(res => { alert(res.data.message) console.log(res.data.user) setLoginUser(res.data.user) navigate('/homepage') }) } }Debe pasar su función setLoginUser al componente de inicio de Login en sus rutas.
<Route path="/login" element={<Login setLoginUser={setLoginUser} />} />Debes reemplazar:
<Route path="/login" element={<Login />} setLoginUser={setLoginUser}/>
por
<Route path="/login" element={<Login setLoginUser={setLoginUser}/>} />
No creo que sea una buena idea crear una ruta de variable como esa en el elemento raíz, pero esto debería funcionar.
¿Por qué tiene <BrowserRouter> y <Routes> ?