Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

301
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!