szczecinski.eu

szczecinski.eu

  • Kurs React
  • Zaawansowany React
  • Kurs Redux
  • Kurs ES6
  • Blog
  • Kontakt

›Intro

Intro

  • Czym jest Redux
  • Instalacja
  • Akcje
  • Reducery
  • Store
  • Przykładowa aplikacja
  • Wiele reducerów

Użycie z React

  • Redux i React
  • react-redux
  • Instalacja
  • Provider
  • connect
  • Argumenty connect

    • mapStateToProps
    • mapDispatchToProps

Dodatkowe informacje

  • Selektory
  • Middleware
  • Przykładowe middleware

    • redux-thunk
    • redux-immutable-state-invariant
  • Niemutowalne aktualizowanie stanu
  • Testowanie reduxa
  • Narzędzia

Store

Store jest kluczowym elementem Reduxa, jednym z niewielu, jakie tworzy API Reduxa. To w store przechowywane są dane, to "do" store emitowane są akcje i to store obsługuje bardziej złożone mechanizmy jak middleware i enhancery.

Store tworzone jest poprzez wywołanie funkcji createStore i przekazanie do niej naszego reducera:

import { createStore } from 'redux';

const store = createStore(reducer);

W efekcie uzyskujemy obiekt, który zawiera kilka metod. Do poprawnej pracy wystarczy poznać 3 z nich:

dispatch

Funkcja dispatch(Object) pozwala na "wyemitowanie" akcji do store, co w efekcie spowoduje wywołanie reducerów i zaktualizowanie stanu aplikacji:

store.dispatch(incrementCounter(10));

Funkcja dispatch oczekuje, że wywołana zostanie z obiektem akcji - w przeciwnym wypadku w konsoli wyświetlony zostanie stosowny komunikat. Istnieje wiele możliwości obejścia tego ograniczenia, więcej na ten temat dowiesz się z sekcji o middleware.

Wywołanie store.dispatch z akcją, jest jedynym sposobem na przekazanie jej do Reduxa w celu aktualizacji stanu. Częstą pomyłką osób zaczynających przygodę z reduxem jest po prostu wywołanie kreatora akcji:

Uwaga - poniższy kod jest celowo błędny! Nie stosuj tego zapisu w swojej aplikacji!

incrementCounter(10);

subscribe

Funkcja subscribe(Function) pozwala na zasubskrybowanie informacji o zdarzeniu zmiany stanu. Jako zwróconą wartość otrzymujemy funkcję, pozwalającą na przerwanie subskrypcji.

const unsubscribe = store.subscribe(() => {
  // akcja została przetworzona przez wszystkie reducery
  // i stan Reduxa został najprawdopodobniej zaktualizowany
});

// kiedy nie potrzebujemy już subskrybować informacji o zmianie stanu:
unsubscribe();

Zarejestrowany callback jest wywoływany bez żadnego argumentu.

getState

Funkcja getState pozwala nam na pobranie aktualnego store - możemy wywołać ją w dowolnym momencie, wszędzie tam, gdzie posiadamy referencję do store. Najczęściej stosowana jest w callbacku store.subscribe:

store.subscribe(() => {
  // stan został najprawdopodobniej zaktualizowany
  const value = store.getState();
  console.log('Nowa wartość: ' + value);
});
← ReduceryPrzykładowa aplikacja →
  • dispatch
  • subscribe
  • getState
Bartosz Szczeciński © 2019 Materiał dostępny na zasadach licencji MIT.