Przejdź do treści

Opublikowano 2024-07-03 · React

useActionState – nowy hook w React

React 19 wprowadził wiele nowych funkcji, w tym kilka ciekawych hooków, które ułatwiają zarządzanie stanem w aplikacjach React. Jednym z najbardziej intrygujących dodatków jest useActionState, który znacząco uprości obsługę operacji asynchronicznych, zwłaszcza w kontekście formularzy.

Co to jest useActionState?

useActionState to hook, który pozwala na aktualizowanie stanu komponentu na podstawie wyniku akcji formularza.

Jest to szczególnie przydatne, gdy chcemy, aby stan komponentu zmieniał się dynamicznie w odpowiedzi na dane zwrócone przez serwer po przesłaniu formularza.

Jak to działa?

  1. Deklaracja Hooka: useActionState przyjmuje dwa główne argumenty: funkcję asynchroniczną (akcję) oraz stan początkowy. Funkcja ta jest wywoływana przy każdej próbie przesłania formularza.
   const [state, formAction] = useActionState(async (prevState, formData) => {
       // Logika akcji
       return { ...prevState, ...formData };
   }, initialState);
  1. Użycie w Komponencie: Hook zwraca dwa elementy: aktualny stan oraz nową akcję, którą możemy przypisać do formularza lub przycisku w formularzu.
   return (
       <form action={formAction}>
           {/* Elementy formularza */}
       </form>
   );

Przykład Użycia

Rozważmy prosty przykład formularza, który zbiera imię i wiek użytkownika i dodaje je do listy użytkowników:

import { useActionState } from "react";

const UserForm = () => {
    const [state, formAction] = useActionState(async (prevState, formData) => {
        const name = formData.get("name");
        const age = formData.get("age");

        // Sprawdzanie czy użytkownik już istnieje
        if (prevState.users.some(user => user.name === name)) {
            return { ...prevState, error: "User already exists" };
        }

        // Dodawanie nowego użytkownika
        return { users: [...prevState.users, { name, age }], error: null };
    }, { users: [], error: null });

    return (
        <form action={formAction}>
            <input type="text" name="name" placeholder="Name" />
            <input type="text" name="age" placeholder="Age" />
            <button type="submit">Add User</button>
            {state.error && <div className="error">{state.error}</div>}
            <ul>
                {state.users.map(user => (
                    <li key={user.name}>{user.name} - {user.age}</li>
                ))}
            </ul>
        </form>
    );
};

Korzyści z używania useActionState

  • Łatwiejsze zarządzanie stanem: useActionState automatyzuje aktualizację stanu na podstawie wyniku akcji, co upraszcza kod i zmniejsza ryzyko błędów.
  • Interaktywność formularzy: Dzięki useActionState, formularze mogą być interaktywne i dynamicznie reagować na wyniki akcji bez potrzeby skomplikowanego zarządzania stanem i efektami ubocznymi.
  • Zintegrowane z React Server Components: Gdy używany jest z komponentami serwerowymi React, useActionState pozwala na wyświetlanie wyników akcji serwera zanim JavaScript zostanie w pełni załadowany na kliencie.

Podsumowanie

useActionState to potężne narzędzie wprowadzane w React 19, które upraszcza zarządzanie asynchronicznymi operacjami w aplikacjach React. Jest szczególnie przydatne w kontekście formularzy, pozwalając na dynamiczne aktualizacje stanu na podstawie wyników akcji formularzy.

Aby dowiedzieć się więcej o useActionState, odwiedź oficjalną dokumentację React na react.dev.

Sprawdź również mój krótki tutorial o React.

Mam nadzieję, że ten wpis pomoże Ci lepiej zrozumieć nowości wprowadzone w React 19 i zachęci do eksperymentowania z nowym hookiem useActionState!


Artykul przygotowal

kemuri

KemuriCodes

Oceń ten artykuł

0.0 5 0 ocen

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Powiazane wpisy

Jesli ten temat jest Ci bliski, sprawdz kolejne materialy z podobnego obszaru.

2024-09-13

Scheduler.yield(): Rewolucja w wydajności aplikacji webowych

Czy Twoja aplikacja webowa czasem „przycina” podczas wykonywania skomplikowanych operacji? Poznaj scheduler.yield() – nowe API JavaScript, które może znacząco poprawić wydajność i responsywność Twoich projektów. Czym jest scheduler.yield()? scheduler.yield() to eksperymentalne API JavaScript, które wprowadza nową jakość w zarządzaniu długimi operacjami w kodzie. Jego głównym zadaniem jest umożliwienie przerywania intensywnych zadań, dając przeglądarce szansę na … Continued

Scheduler.yield(): Rewolucja w wydajności aplikacji webowych

2024-09-13

Scheduler.yield(): Revolution in Web Application Performance

Does your web application sometimes „stutter” when performing complex operations? Meet scheduler.yield() – a new JavaScript API that can significantly improve the performance and responsiveness of your projects. What is scheduler.yield()? scheduler.yield() is an experimental JavaScript API that introduces a new quality in managing long operations in code. Its main task is to enable the … Continued

Scheduler.yield(): Revolution in Web Application Performance

2024-08-22

Swapy: Magia Drag-and-Drop w Twoich rękach

Hej, deweloperzy! Czy kiedykolwiek marzyliście o narzędziu, które zamieni żmudne kodowanie funkcji drag-and-drop w dziecinnie prostą zabawę? Poznajcie Swapy – waszego nowego najlepszego przyjaciela w świecie tworzenia interaktywnych interfejsów użytkownika! W tym artykule opiszę, czym jest to narzędzie, sposób jego wykorzystania w różnych środowiskach programistycznych oraz czy ma jakiekolwiek wady, czy tylko same zalety. Swapy … Continued

Swapy: Magia Drag-and-Drop w Twoich rękach