React
1 Introduction to React
1-1 What is React?
1-2 History and Evolution of React
1-3 Key Features of React
1-4 Setting Up the Development Environment
2 JSX and Components
2-1 Introduction to JSX
2-2 Writing JSX Syntax
2-3 Creating Components
2-4 Functional vs Class Components
2-5 Props and State
3 React State Management
3-1 Understanding State
3-2 Managing State in Functional Components
3-3 Managing State in Class Components
3-4 Lifting State Up
3-5 Context API
4 React Hooks
4-1 Introduction to Hooks
4-2 useState Hook
4-3 useEffect Hook
4-4 useContext Hook
4-5 Custom Hooks
5 React Router
5-1 Introduction to React Router
5-2 Setting Up React Router
5-3 Route, Link, and NavLink
5-4 Nested Routes
5-5 Programmatic Navigation
6 Handling Events in React
6-1 Introduction to Events
6-2 Handling Events in Functional Components
6-3 Handling Events in Class Components
6-4 Synthetic Events
6-5 Event Bubbling and Capturing
7 Forms and Controlled Components
7-1 Introduction to Forms in React
7-2 Controlled Components
7-3 Handling Form Submission
7-4 Form Validation
7-5 Uncontrolled Components
8 React Lifecycle Methods
8-1 Introduction to Lifecycle Methods
8-2 Component Mounting Phase
8-3 Component Updating Phase
8-4 Component Unmounting Phase
8-5 Error Handling
9 React and APIs
9-1 Introduction to APIs
9-2 Fetching Data with useEffect
9-3 Handling API Errors
9-4 Caching API Responses
9-5 Real-time Data with WebSockets
10 React Performance Optimization
10-1 Introduction to Performance Optimization
10-2 React memo and PureComponent
10-3 useCallback and useMemo Hooks
10-4 Lazy Loading Components
10-5 Code Splitting
11 React Testing
11-1 Introduction to Testing in React
11-2 Writing Unit Tests with Jest
11-3 Testing Components with React Testing Library
11-4 Mocking Dependencies
11-5 End-to-End Testing with Cypress
12 Advanced React Patterns
12-1 Higher-Order Components (HOC)
12-2 Render Props
12-3 Compound Components
12-4 Context and Provider Pattern
12-5 Custom Hooks for Reusability
13 React and TypeScript
13-1 Introduction to TypeScript
13-2 Setting Up TypeScript with React
13-3 TypeScript Basics for React
13-4 TypeScript with Hooks
13-5 TypeScript with React Router
14 React and Redux
14-1 Introduction to Redux
14-2 Setting Up Redux with React
14-3 Actions, Reducers, and Store
14-4 Connecting React Components to Redux
14-5 Middleware and Async Actions
15 React and GraphQL
15-1 Introduction to GraphQL
15-2 Setting Up GraphQL with React
15-3 Querying Data with Apollo Client
15-4 Mutations and Subscriptions
15-5 Caching and Optimistic UI
16 React Native
16-1 Introduction to React Native
16-2 Setting Up React Native Development Environment
16-3 Building a Simple App
16-4 Navigation in React Native
16-5 Styling and Animations
17 Deployment and Best Practices
17-1 Introduction to Deployment
17-2 Deploying React Apps to GitHub Pages
17-3 Deploying React Apps to Netlify
17-4 Deploying React Apps to AWS
17-5 Best Practices for React Development
React Router Tutorial

React Router Tutorial

Key Concepts

BrowserRouter

BrowserRouter is a context provider that wraps your entire application, enabling routing functionality. It uses the HTML5 history API to keep the UI in sync with the URL.

Example:

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

        function App() {
            return (
                <BrowserRouter>
                    <div>
                        <Routes>
                            <Route path="/" element={<Home />} />
                            <Route path="/about" element={<About />} />
                        </Routes>
                    </div>
                </BrowserRouter>
            );
        }
    

Routes

Routes is a container for multiple Route components. It determines which Route to render based on the current URL.

Example:

        import { Routes, Route } from 'react-router-dom';

        function App() {
            return (
                <div>
                    <Routes>
                        <Route path="/" element={<Home />} />
                        <Route path="/about" element={<About />} />
                    </Routes>
                </div>
            );
        }
    

Route

Route is a component that maps a URL path to a specific component. It defines what should be rendered when the URL matches the specified path.

Example:

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

        function App() {
            return (
                <div>
                    <Route path="/" element={<Home />} />
                    <Route path="/about" element={<About />} />
                </div>
            );
        }
    

Link

Link is a component that provides declarative, accessible navigation around your application. It prevents the page from reloading and updates the URL.

Example:

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

        function Navigation() {
            return (
                <nav>
                    <Link to="/">Home</Link>
                    <Link to="/about">About</Link>
                </nav>
            );
        }
    

useNavigate

useNavigate is a hook that returns a function allowing you to navigate programmatically. It is useful for handling navigation in response to events.

Example:

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

        function LoginButton() {
            const navigate = useNavigate();

            const handleLogin = () => {
                // Perform login logic
                navigate('/dashboard');
            };

            return (
                <button onClick={handleLogin}>Login</button>
            );
        }
    

Analogies

Think of BrowserRouter as a GPS system that guides your application. Routes are like the different routes you can take, and Route is like a specific destination on the map. Link is like a clickable button on the GPS that takes you to a new destination, and useNavigate is like a voice command that tells the GPS to take you to a specific place.

Another analogy is a library. BrowserRouter is the library itself, Routes are the different sections (fiction, non-fiction), Route is a specific book on the shelf, Link is a sign pointing to a section, and useNavigate is a librarian who can take you directly to the book you want.