Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

110
Visualizações
Retorno de elemento de ruta asíncrona en React JS

Obtener error: Guardia (...): No se devolvió nada del renderizado. Esto generalmente significa que falta una declaración de devolución.

Quiero llamar a la API en mi componente de protección antes de devolver el elemento a Elemento de ruta para verificar si el usuario que inició sesión tiene acceso a una ruta específica o no.

Para eso, he implementado una guardia. Aquí está el código del archivo de ruta.

 export default function Router() { return ( <Routes> <Route path="organizations"> <Route path="list" element={<Guard><ListOrganization /></Guard>} /> </Routes > ); }

Código de componente de protección

 const Guard = (props) => { fetch('https://apiToCheckPermission.com') .then(response => { if (response.isPermission) { return props.children; } }) }; export default Guard;

Es algo así como que quiero implementar un elemento de ruta asíncrona. Pero React arroja un error si no devuelvo inmediatamente el elemento de Guard.

¿Alguien puede decir cómo resolver este error?

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Intente definir un estado para manejar el permiso y useEffect para cargar los datos:

 const Guard = (props) => { const [hasPermission, setHasPermission] = useState(false); useEffect(async () => { const response = await fetch('https://apiToCheckPermission.com'); setHasPermission(response.isPermission); }, []); if (!hasPermission) return <>Unauthorized</>; return props.children; }; export default Guard;
about 4 years ago · Juan Pablo Isaza Relatório

0

Si se supone que Guard es un componente de React, entonces siempre debe devolver un JSX válido. La Guard actualmente no devuelve nada. Es decir, necesitaría devolver algo de la cadena Promise y luego devolverlo desde el cuerpo de la función.

Para resolver, use algún estado local para mantener un valor de permiso confirmado/verificado y representar condicionalmente a children elementos secundarios o una alternativa. Una implementación típica de protección de ruta esperará para confirmar el acceso de un usuario y luego representará a los children o redirigirá a la página de inicio de sesión con la ubicación a la que se accede para que el usuario pueda ser redirigido después de la autenticación.

Ejemplo:

 const Guard = ({ children }) => { const location = useLocation(); const [hasPermission, setHasPermission] = React.useState(); // <-- initially undefined React.useEffect(() => { ); fetch('https://apiToCheckPermission.com') .then(response => { setHasPermission(response.isPermission); }); }, []); if (hasPermission === undefined) { return null; // or loading indicator, spinner, etc } return hasPermission ? children : <Navigate to="/login" replace state={{ from: location }} />; };
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda