Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

309
Vistas
Procesamiento de React-Router: las funciones no son válidas como un niño React
  1. He creado un HOC "ProtectedRoute" para restringir rutas para usuarios no autenticados. He usado "react-router-dom" para el enrutamiento en la aplicación.

  2. Puedo enrutar a los usuarios en función de su token, pero recibo una advertencia en la consola y no puedo acceder a los accesorios del enrutador como "historial", "ubicación", "coincidencia" en el componente representado. A continuación se muestra la implementación del componente ProtectedRoute.

     const ProtectedRoute = ({component:Component, ...rest}) => { const [isLoggedIn, setLoggedIn] = useState({loggedIn:false, loaded:false}) useEffect(async () => { const userStatus = await validateUserLoggedIn(); # returns true if user is authenticated setLoggedIn((prevState) => {return {loggedIn:userStatus, loaded:true}}) }, []) return( <Route {...rest} render={(routerProps) => { return isLoggedIn.loaded ? isLoggedIn.loggedIn ? <Component {...routerProps} {...rest} /> : <Redirect to={{pathname:'/login'}} : <h1>Loading Page</h1> }} /> ) }
  3. ProtectedRoute en el componente de enrutamiento principal:

     <Switch> <ProtectedRoute exact path="/admin" component={Admin} /> </Switch>
  4. Mensaje de error "Las funciones no son válidas como elemento secundario de React. Esto puede suceder si devuelve un Componente en lugar de renderizar. O tal vez pretendía llamar a esta función en lugar de devolverla".

Cualquier sugerencia es apreciada.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Ok, entonces hay algunas cosas mal.

  1. No debe devolver algo dentro de un componente, lo está haciendo dentro de su componente <Route /> . Esto está provocando la advertencia: las Functions are not valid as a React child. This may happen if you return a Component instead of from render .

  2. A su componente <Redirect /> le faltaba /> al final, dejarlo abierto provocará un error.

Estas correcciones también deberían resolver su problema en el que no podía acceder a los accesorios de ruta.

 <Route {...rest} render={(routerProps) => { isLoggedIn.loaded ? ( isLoggedIn.loggedIn ? ( <Component {...routerProps} {...rest} /> ) : ( <Redirect to={{ pathname: '/login' }} /> ) ) : ( <h1>Loading Page</h1> ); }} />;
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda