Zum Inhalt springen

Today I learned in React

A Single Page Application (SPA) in React is a web application that loads a single HTML page and dynamically updates the content as the user interacts with the app, without requiring a full page reload. This creates a smooth, fast, and responsive user experience.

Key Concepts of SPA in React

  1. Client-Side Routing: Managed by libraries like react-router-dom. It allows navigation between components without refreshing the browser.
  2. Component-Based Architecture: UI is broken into reusable components.
  3. State Management: Managed using React’s useState, useContext, or external libraries like Redux or Zustand.
  4. API Calls: Fetch or Axios is used to load data from a backend without reloading the page.

Basic Project Structure

my-spa/
│
├── public/
│   └── index.html
├── src/
│   ├── components/
│   │   └── Home.js
│   │   └── About.js
│   ├── App.js
│   ├── index.js
│   └── routes.js
├── package.json
└── ...

Benefits of SPA

  • Faster navigation (no full page reload)
  • Better user experience
  • Efficient front-end development using reusable components

A multi-page application (MPA) in React involves having multiple pages with different URLs and distinct components rendered on each page. While React is often associated with single-page applications (SPAs), it can certainly be used to create multi-page apps using tools like React Router.

Key Concepts

  1. React Router: Enables navigation among different components with different URLs.
  2. Page Components: Each „page“ is a component, typically placed in a pages/ directory.
  3. BrowserRouter: Manages the routing using the HTML5 History API.
  4. Route Paths: Match the URL to the component.

Typical File Structure

my-app/
├── public/
│   └── index.html
├── src/
│   ├── pages/
│   │   ├── Home.jsx
│   │   ├── About.jsx
│   │   └── Contact.jsx
│   ├── App.jsx
│   ├── index.js
└── package.json

Summary

React MPA uses:

  • React Router for multiple routes
  • Separate components for each page
  • BrowserRouter/Routes/Route for routing logic
    A multi-page application (MPA) in React involves having multiple pages with different URLs and distinct components rendered on each page. While React is often associated with single-page applications (SPAs), it can certainly be used to create multi-page apps using tools like React Router.

Key Concepts

  1. React Router: Enables navigation among different components with different URLs.
  2. Page Components: Each „page“ is a component, typically placed in a pages/ directory.
  3. BrowserRouter: Manages the routing using the HTML5 History API.
  4. Route Paths: Match the URL to the component.

Typical File Structure

my-app/
├── public/
│   └── index.html
├── src/
│   ├── pages/
│   │   ├── Home.jsx
│   │   ├── About.jsx
│   │   └── Contact.jsx
│   ├── App.jsx
│   ├── index.js
└── package.json

Summary

React MPA uses:

  • React Router for multiple routes
  • Separate components for each page
  • BrowserRouter/Routes/Route for routing logic
    The terms JSM and JSX relate to JavaScript and front-end development, but they refer to very different concepts. Here’s a breakdown:

JSX (JavaScript XML)

JSX is a syntax extension for JavaScript, commonly used with React to describe what the UI should look like.

Key features:

  • Looks like HTML but is written in JavaScript.
  • Transpiled to React.createElement() calls under the hood.
  • Allows combining UI layout with logic more intuitively.

Example:

function Hello() {
  return <h1>Hello, world!</h1>;
}

JSX makes it easier to write and understand the structure of your UI in React apps.

JSM (JavaScript Modules)

JSM usually refers to JavaScript Modules, which is the standard way to structure and import/export code across different files in modern JavaScript.

Key features:

  • Uses import and export syntax.
  • Allows code splitting and modular design.
  • Used in both browser and Node.js environments (with type="module" or .mjs files in Node.js).

Example:

// math.js
export function add(a, b) {
  return a + b;
}

// main.js
import { add } from './math.js';
console.log(add(2, 3)); // 5

Summary Table

Feature JSX JSM (JavaScript Modules)
Purpose UI syntax for React Code modularization and reuse
File type .jsx or .js .js or .mjs
Based on JavaScript + XML-like syntax JavaScript ES6 module syntax
Used in React components Any modern JS project

When discussing library vs. framework in the context of React, things get interesting because React itself is a library, but it’s often used like a framework thanks to its ecosystem.

React: Library

React is officially described as:

“A JavaScript library for building user interfaces.”

Why React is a library:

  • It focuses only on the UI layer.
  • You can use React independently, without enforcing app structure or patterns.
  • You choose what other tools to use for routing, state, data fetching, etc.

Example:

function Welcome() {
  return <h1>Hello, React!</h1>;
}

This is just a piece of UI. You decide how to manage state, routing, etc.

Frameworks Built on React

When React is used with other tools in a structured way, or when combined with platforms built on top of React, it starts to function like a framework.

Examples of frameworks in the React ecosystem:

Framework Description
Next.js Full-stack React framework with routing, SSR, API routes
Remix Focuses on web standards, routing, and data loading
Gatsby Static site generator using React
React Native Framework for building native mobile apps with React

These tools:

  • Decide how routing works
  • Often come with opinionated folder structures
  • Provide performance optimization features out of the box

Summary

  • React is a library because it only handles the UI.
  • Next.js, Remix, and others are frameworks built on top of React.
  • You can turn React into a “framework-like” setup by combining it with other tools (React Router, Redux, Webpack, etc.).

—Great question! Let’s clarify the difference between JSX and XJS, as they sound similar but are very different in meaning (and one of them isn’t commonly used anymore).

JSX (JavaScript XML)

JSX is a syntax extension for JavaScript that lets you write HTML-like code inside JavaScript, most commonly used with React.

Example:

const element = <h1>Hello, JSX!</h1>;
  • Transpiled to: React.createElement("h1", null, "Hello, JSX!")
  • Not valid JavaScript by itself—needs tools like Babel to transpile it
  • Helps describe UI structure in React apps

XJS

There is no widely-used „XJS“ in modern JavaScript or React development.

However:

  1. Historical context:
  • XJS was an older, experimental XML-like syntax similar to JSX used in early React development.
  • It was quickly deprecated in favor of JSX, which became the standard.
  1. Possible confusion:
  • You might see „XJS“ in niche or outdated resources, but it’s not used anymore in the React ecosystem.

React Hooks — Modern Way to Manage State & Side Effects

React Hooks are functions that let you „hook into“ React state and lifecycle features from function components—without using class components.

Why Hooks?

Before hooks (React 16.8), you needed class components for state, lifecycle methods, etc.
Now, functional components + hooks = full power of React.

Most Common Hooks

Hook Purpose Example
useState Adds state to function components const [count, setCount] = useState(0)
useEffect Handles side effects (API calls, etc.) useEffect(() => {...}, [])
useContext Access context data useContext(MyContext)
useRef Create a mutable reference (e.g., DOM) const inputRef = useRef()
useMemo Memoize expensive calculations useMemo(() => compute(), [deps])
useCallback Memoize functions useCallback(fn, [deps])
useReducer Alternative to useState for complex logic useReducer(reducer, initialState)

Basic Example: useState and useEffect

import React, { useState, useEffect } from 'react';

function Counter() {
  const [count, setCount] = useState(0);

  useEffect(() => {
    console.log(`Count is now: ${count}`);
  }, [count]); // runs when count changes

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(count + 1)}>Click me</button>
    </div>
  );
}

Key Principles

  • Hooks only work in function components.
  • Hooks must be called at the top level, not inside loops or conditions.
  • Custom hooks are your own functions that use other hooks to reuse logic.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert