Jak korzystać z reduktora z React Context API?

Dec 15, 2025

Hej tam! Jeśli interesujesz się programowaniem React, prawdopodobnie słyszałeś o API React Context i reduktorach. Połączenie ich może zmienić sposób zarządzania stanem w aplikacjach React. I zgadnij co? Jestem dostawcą reduktorów, więc mam kilka spostrzeżeń, którymi mogę się podzielić na temat korzystania z reduktora za pomocą interfejsu API React Context.

Na początek przyjrzyjmy się szybko, czym jest interfejs API React Context i reduktory. React Context API to sposób na współdzielenie danych pomiędzy komponentami bez konieczności ręcznego przekazywania rekwizytów na każdym poziomie drzewa komponentów. Jest to bardzo przydatne, gdy masz dane, do których wiele komponentów potrzebuje dostępu, np. stan uwierzytelnienia użytkownika lub ustawienia motywu.

Z drugiej strony reduktor jest czystą funkcją, która przyjmuje bieżący stan i akcję jako dane wejściowe i zwraca nowy stan. To kluczowa koncepcja w Reduxie, ale możesz jej także używać niezależnie w React. Reduktory doskonale nadają się do zarządzania złożonymi zmianami stanu w przewidywalny sposób.

Dlaczego więc miałbyś chcieć używać reduktora z interfejsem API React Context? Cóż, kontekstowy interfejs API świetnie nadaje się do udostępniania danych, ale nie ma wbudowanego sposobu zarządzania złożonymi aktualizacjami stanu. W tym miejscu z pomocą przychodzą reduktory. Używając reduktora z Context API, możesz mieć scentralizowane miejsce do zarządzania zmianami stanu i udostępniania tego stanu w całej aplikacji.

Zacznijmy od skonfigurowania podstawowej struktury. Najpierw musisz stworzyć kontekst. W React możesz to zrobić za pomocąutwórzkontekstfunkcjonować. Oto przykład:

importuj Reaguj, { createContext, useReducer } z'reaguj'; // Utwórz kontekst const MyContext = createContext(); // Zdefiniuj funkcję reduktora const redukcjar = (stan, akcja) => { przełącznik (akcja.typ) { case 'INCREMENT': return { liczba: stan.liczba + 1 }; case 'DECREMENT': return { liczba: stan.liczba - 1 }; domyślnie: stan powrotu; } }; // Utwórz komponent dostawcy const MyProvider = ({ dzieci }) => { const [stan, wysyłka] = useReducer(reducer, { liczba: 0 }); return ( <MyContext.Provider wartość={{ stan, wysyłka }}> {dzieci} </MyContext.Provider> ); }; eksportuj {Mójkontekst, Mój dostawca};

W tym przykładzie najpierw tworzymy kontekst zwanyMójKontekst. Następnie definiujemy funkcję redukcyjną, która może obsłużyć dwa typy działań:PRZYROSTISPADEK. TheMój dostawcakomponent używaużyj Reduktorahak do zarządzania stanem i funkcją wysyłania. Stan i wysyłka są następnie przekazywane jako wartość do metodyMójKontekst. Dostawca.

Zobaczmy teraz, jak użyć tego kontekstu w komponencie. Załóżmy, że masz prosty komponent, który chce używać akcji stanu i wysyłania. Oto jak możesz to zrobić:

importuj Reaguj, {useContext } z'reaguj'; importuj {MójKontekst} z „./yourContextFile”; const MójKomponent = () => { const {stan, wysyłka } = useContext(MójKontekst); return ( <div> <p>Liczba: {state.count</p> <button onClick={() => wysyłka({ type: 'INCREMENT' })}>Przyrost</button> <button onClick={() => wysyłka({ type: 'DECREMENT' })}>Zmniejszenie</button> </div> ); }; eksportuj domyślny MójKomponent;

WMój komponent, używamyużyjkontekstuhook, aby uzyskać dostęp do funkcji stanu i wysyłania z kontekstu. Możemy następnie wyświetlić stan i wysłać akcje, aby go zaktualizować.

Jedną z największych zalet używania reduktora z interfejsem API React Context jest to, że sprawia on, że kod jest łatwiejszy w utrzymaniu. Ponieważ wszystkie zmiany stanu są obsługiwane w jednym miejscu (reduktorze), łatwiej jest zrozumieć, w jaki sposób stan jest aktualizowany. Ponadto, ponieważ stan jest udostępniany w kontekście, nie musisz się martwić o wiercenie podpór.

Porozmawiajmy teraz o kilku rzeczywistych przypadkach użycia. Jeśli tworzysz aplikację e-commerce, możesz mieć koszyk. Stanem koszyka można zarządzać za pomocą reduktora i udostępniać go różnym komponentom, takim jak lista produktów, podsumowanie koszyka i strona kasy.

Przyjrzyjmy się bardziej złożonemu przykładowi reduktora dla koszyka:

const cartReducer = (stan, akcja) => { przełącznik (typ akcji) { case 'ADD_TO_CART': return { ...stan, elementy: [...stan.items, akcja.ładunek] }; case 'REMOVE_FROM_CART': return { ...stan, pozycje: stan.items.filter(item => item.id!== akcja.payload.id) }; case 'UPDATE_QUANTITY': return { ...stan, pozycje: stan.items.map(item => item.id === akcja.payload.id ? {...item, ilość: akcja.payload.quantity } : item ) }; domyślnie: stan powrotu; } };

Reduktor ten obsługuje dodawanie artykułów do koszyka, usuwanie artykułów z koszyka oraz aktualizację ilości artykułów w koszyku.

Jako dostawca reduktorów oferuję różnorodne reduktory wysokiej jakości do różnych zastosowań. Na przykład, jeśli pracujesz nad projektem wymagającym materiałów o wysokiej wytrzymałości, możesz być zainteresowany naszymi produktamiReduktor tytanowy Gr7. Jest wykonany z najwyższej jakości tytanu i może wytrzymać trudne warunki. A jeśli potrzebujesz reduktora o określonej odporności chemicznej, naszeReduktor cyrkonumoże być idealnym rozwiązaniem.

Jeśli chcesz zaimplementować reduktor za pomocą React Context API w swoim projekcie i potrzebujesz niezawodnych reduktorów, nie wahaj się z nami skontaktować. Niezależnie od tego, czy jesteś małym programistą, czy dużym przedsiębiorstwem, mamy dla Ciebie odpowiednie rozwiązania. Możemy dostarczyć szczegółowe specyfikacje i wsparcie, aby zapewnić maksymalne wykorzystanie naszych reduktorów.

Skontaktuj się z nami, aby uzyskać więcej informacji i rozpocząć proces zakupu. Jesteśmy tutaj, aby pomóc Ci zbudować lepsze aplikacje React za pomocą odpowiednich reduktorów.

Titanium Gr7 ReducerZirconium Reducer

Referencje:

  • Oficjalna dokumentacja Reaguj na Context API
  • Reaguj na oficjalną dokumentację dotyczącą haka useReducer