"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Dominando o React Routing: um guia completo para navegar em seu aplicativo

Dominando o React Routing: um guia completo para navegar em seu aplicativo

Publicado em 2024-11-07
Navegar:128

Mastering React Routing: A Complete Guide to Navigating Your Application

1. Introdução ao roteador React

React Router é uma biblioteca para lidar com roteamento em aplicativos React. Ele permite que seu aplicativo navegue entre diferentes componentes e visualizações sem recarregar a página inteira, tornando a experiência do usuário perfeita.


2. Configuração básica

Comece instalando react-router-dom:

npm install react-router-dom

Configure o roteamento básico usando BrowserRouter, Routes e Route:

import React from 'react';
import { BrowserRouter as Router, Routes, Route, Link } from 'react-router-dom';

const Home = () => 

Home

; const About = () =>

About

; const App = () => { return ( } /> } /> ); }; export default App;

3. Roteamento aninhado

Para aplicativos mais complexos, você pode aninhar rotas. Veja como configurar rotas aninhadas em um componente pai:

import React from 'react';
import { BrowserRouter as Router, Routes, Route, Link } from 'react-router-dom';

const Dashboard = () => 

Dashboard Home

; const Profile = () =>

Your Profile

; const DashboardLayout = () => { return (
} /> } />
); }; const App = () => { return ( } /> ); }; export default App;

4. Roteamento Dinâmico

O roteamento dinâmico permite que você passe parâmetros na URL. Veja como definir e acessar uma rota dinâmica:

import { useParams } from 'react-router-dom';

const User = () => {
  const { id } = useParams();
  return 

User ID: {id}

; }; const App = () => { return ( } /> ); }; export default App;

5. Rotas protegidas

Para implementar rotas protegidas, você pode criar um componente PrivateRoute personalizado:

import { Navigate, Outlet } from 'react-router-dom';

const useAuth = () => {
  const user = { loggedIn: true }; // Replace with actual auth logic
  return user && user.loggedIn;
};

const PrivateRoute = () => {
  const isAuth = useAuth();
  return isAuth ?  : ;
};

const App = () => {
  return (
    } />
        }>
          } />
        
      
  );
};

export default App;

6. Navegação Programática

Às vezes, você pode querer navegar programaticamente, como após o envio de um formulário. Use o gancho useNavigate no React Router v6:

import { useNavigate } from 'react-router-dom';

const Login = () => {
  const navigate = useNavigate();

  const handleLogin = () => {
    // Login logic here...
    navigate('/dashboard');
  };

  return (
    

Login

); }; export default Login;

7. 404 páginas

Trate de erros 404 (não encontrado) criando uma rota abrangente:

const NotFound = () => 

404 - Page Not Found

; const App = () => { return ( } /> } /> } /> ); }; export default App;

8. Considerações de desempenho

Para aplicativos grandes, rotas de carregamento lento podem melhorar o desempenho. Veja como implementar o carregamento lento com React.lazy() e Suspense:

import React, { Suspense, lazy } from 'react';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';

const Home = lazy(() => import('./Home'));
const About = lazy(() => import('./About'));

const App = () => {
  return (
    Loading...}>
        } />
          } />
        
  );
};

export default App;

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/mourya_modugula/mastering-react-routing-a-complete-guide-to-navigating-your-application-56dk?1 Se houver alguma violação, entre em contato com study_golang@163 .com para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3