Heim > Web-Frontend > js-Tutorial > Ein Leitfaden für Einsteiger zum Zustandsmanagement in React with Zustand

Ein Leitfaden für Einsteiger zum Zustandsmanagement in React with Zustand

Patricia Arquette
Freigeben: 2024-12-27 07:37:09
Original
638 Leute haben es durchsucht

A Beginner’s Guide to State Management in React with Zustand

Einführung

Zustandsverwaltung ist für jede React-Anwendung von entscheidender Bedeutung, aber traditionelle Bibliotheken wie Redux können manchmal übertrieben wirken. Geben Sie Zustand ein, eine minimale und leistungsstarke Zustandsverwaltungslösung für React. In diesem Beitrag gehen wir darauf ein, warum Zustand zu einem Favoriten für Entwickler wird und wie Sie damit in Ihren React-Projekten beginnen können.

Was ist Zustand?

Zustand ist eine Zustandsverwaltungsbibliothek für React, die einfach und intuitiv gestaltet ist. Es ist leichtgewichtig und erfordert nicht viel Boilerplate, was die Verwendung einfacher macht als Redux oder sogar die React Context API. Werfen wir einen Blick darauf, wie wir Zustand in unseren React-Anwendungen verwenden können.

Zustand in React einrichten

  • Installationszustand

    npm install zustand
    
    Nach dem Login kopieren
  • Einen Shop erstellen
    Hier ist ein einfaches Beispiel für die Erstellung eines Shops im Zustand:

    import {create} from 'zustand';
    
    const useStore = create((set) => ({
      count: 0,
      increase: () => set((state) => ({ count: state.count + 1 })),
      decrease: () => set((state) => ({ count: state.count - 1 })),
    }));
    
    Nach dem Login kopieren
  • Verwenden des Stores in einer Komponente
    Jetzt verwenden wir den Store in einer React-Komponente:

    import React from 'react';
    import { useStore } from './store';
    
    const Counter = () => {
      const { count, increase, decrease } = useStore();
    
      return (
        <div>
          <h1>{count}</h1>
          <button onClick={increase}>Increase</button>
          <button onClick={decrease}>Decrease</button>
        </div>
      );
    };
    
    export default Counter;
    
    Nach dem Login kopieren

Erweiterte Zustandsfunktionen: get, getState

  • Zustand bietet außerdem zwei weitere nützliche Funktionen: get und getState. Diese werden verwendet, um den Status abzurufen und den Status zu jedem Zeitpunkt abzurufen

getState(): Diese Funktion gibt Ihnen den aktuellen Status des Stores, ohne ein erneutes Rendern auszulösen.

import {create} from 'zustand';

const useStore = create((set) => ({
  count: 0,
  increase: () => set((state) => ({ count: state.count + 1 })),
  decrease: () => set((state) => ({ count: state.count - 1 })),
}));

// Accessing the current state using getState()
const count= useStore.getState().count;

// Reading the current state value
console.log(count); // This will log the current count

// Modifying the state using the actions
store.increase(); // This will increase the count
console.log(store.count); // This will log the updated count
Nach dem Login kopieren

get(): Mit dieser Funktion können Sie direkt aus dem Store selbst auf den Status zugreifen. Dies ist nützlich, wenn Sie den Status vor oder nach dem Festlegen überprüfen oder ändern müssen.

import {create} from 'zustand';

const useStore = create((set, get) => ({
  count: 0,
  increase: (amount) => {
    const currentState = get(); // Access the current state using getState()
    console.log("Current count:", currentState.count); // Log the current count
    set((state) => ({ count: state.count + amount })); // Modify the state
  },
})); 
Nach dem Login kopieren

Scheiben im Zustand

  • Wenn Ihre Anwendung wächst, ist es eine gute Idee, Ihren Bundesstaat in kleinere, überschaubarere Teile zu gliedern. Hier kommen Slices ins Spiel. Ein Slice ist ein modulares Zustandselement mit einer eigenen Reihe von Aktionen. Jeder Abschnitt kann in einer eigenen Datei definiert werden, wodurch Ihr Code sauberer und wartbarer wird.
// counterStore.js
export const createCounterSlice = (set) => ({
  count: 0,
  increase: () => set((state) => ({ count: state.count + 1 })),
  decrease: () => set((state) => ({ count: state.count - 1 })),
});

Nach dem Login kopieren
// userStore.js
export const createUserSlice = (set) => ({
  user: { name: 'John Doe' },
  setName: (name) => set({ user: { name } }),
});

Nach dem Login kopieren
// useBoundStore.js
import {create} from 'zustand';
import { createCounterSlice } from './counterStore';
import { createUserSlice } from './userStore';

export const useBoundStore = create((...a) => ({
  ...createCounterSlice(...a),
  ...createUserSlice(...a),
}));
Nach dem Login kopieren

So verwenden Sie die Innenkomponente

import { useBoundStore } from './useBoundStore'
const App = () => {
  const { count, increase, decrease, user, setName } = useBoundStore();
}
Nach dem Login kopieren

Anhaltender Zustand im Zustand

  • Die Persistenz-Middleware von Zustand speichert den Status automatisch in localStorage, wenn er sich ändert, und lädt ihn wieder, wenn die Seite neu geladen wird. Dadurch wird sichergestellt, dass der Status gleich bleibt, ohne dass zusätzliche Arbeit erforderlich ist.
import {create} from 'zustand';
import { persist } from 'zustand/middleware';

const useStore = create(
  persist(
    (set) => ({
      count: 0,
      increase: () => set((state) => ({ count: state.count + 1 })),
      decrease: () => set((state) => ({ count: state.count - 1 })),
    }),
    {
      name: 'counter-storage', // The name of the key in localStorage
    }
  )
);

Nach dem Login kopieren

Abrufen von Daten von einer API im Zustand

  • Um Daten von einer API im Zustand abzurufen, erstellen Sie eine Aktion in Ihrem Shop, um den API-Aufruf zu verarbeiten und den Status mit den abgerufenen Daten, Lade- und Fehlerzuständen zu aktualisieren.
import {create} from 'zustand';

const useStore = create((set) => ({
  users: [], // Array to store fetched users
  loading: false, // State to track loading status
  error: null, // State to track any errors during API call

  // Action to fetch users from the API
  fetchUsers: async () => {
    set({ loading: true, error: null }); // Set loading state to true and reset error
    try {
      const response = await fetch('https://jsonplaceholder.typicode.com/users');
      const data = await response.json();
      set({ users: data, loading: false }); // Set users data and loading to false
    } catch (error) {
      set({ error: 'Failed to fetch users', loading: false }); // Set error if fetch fails
    }
  },
}));

export default useStore;
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonEin Leitfaden für Einsteiger zum Zustandsmanagement in React with Zustand. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage