Stan może być złożony i należy to zrozumieć, aby zrozumieć, które problemy rozwiązania
stanu, takie jak Redux, faktycznie rozwiązują.
Gdybyśmy mieli taką aplikację, która nie jest aplikacją, którą zbudowaliśmy, ale która mogłaby być aplikacją, którą tworzysz, w
której masz dwa różne obszary, jeden, w którym zarządzasz użytkownikami, gdzie użytkownicy mogą się logować, gdzie użytkownicy
mogą zarządzać swoimi pulpit nawigacyjny, zobacz ich pulpit nawigacyjny itd. i taki, w którym masz produkty
na liście, które użytkownicy mogą
dodawać do koszyka, wówczas obszary te nie są w rzeczywistości całkowicie niezależne, ale w Twojej aplikacji będą renderowane
na różnych ekranach, więc są całkiem oddzielone od wzajemnie.
Ale pytanie, czy użytkownik jest zalogowany, którego potrzebujesz tutaj, może mieć znaczenie również w innej
części aplikacji
i teraz, zwykle trzeba przekazywać te dane ręcznie przez rekwizyty, przekazując je z komponentu A
do B do C do D aż do E, gdzie może być to
potrzebne, nie jest to zbyt wygodne.
Zamiast tego chcesz mieć konfigurację aplikacji, w której coś się zmienia, na przykład użytkownik loguje się lub
w naszej
aplikacji do posiłków, ustawiasz określony filtr i zapisujesz go, a następnie informacje te są propagowane w Twojej aplikacji i
automatycznie przekazywane do miejsc tam, gdzie jest to potrzebne, ale nie
za pomocą rekwizytów, ale z kilkoma mechanizmami za kulisami, które pomagają ci w tym i właśnie tam Redux
jest powszechnym rozwiązaniem używanym w aplikacjach React i React Native do zarządzania tym stanem.
Jak działa Redux?
Przede wszystkim Redux to biblioteka innej firmy, którą można dodać do React Native, aby z
niej korzystać, a wszystko to o posiadaniu centralnego sklepu. Redux wprowadza centralny magazyn w pamięci, a nie
w bazie danych, ale jest w pamięci, w pamięci Javascript, aby powiedzieć, gdzie jest stan twojej aplikacji, więc
dane, od których zależą różne części aplikacji, mogą być przechowywane, a następnie, gdy w jednym komponencie,
masz coś,
co chce zmanipulować ten stan, na przykład ustawiamy filtr lub oznaczamy
posiłek jako ulubiony, a następnie wysyłamy tak zwaną akcję, jest to wstępnie zdefiniowany pakiet informacyjny, który można powiedzieć,
mając pewien schemat, który może być obsługiwany przez Redux zgodnie z twoją konfiguracją.
Ta akcja dociera do tak zwanego reduktora, a ty będziesz tym, który pisze reduktor
jako programista, dzięki czemu możesz kontrolować, jaki rodzaj akcji akceptuje reduktor, więc jakiego
rodzaju pakiet informacji wymaga twój reduktor, a następnie reduktor otrzymuje akcję i wyprowadza nowy stan na podstawie
starego stanu, który następnie aktualizuje ten centralnie przechowywany stan. Więc reduktor jest w stanie zaktualizować
stan na końcu.
A kiedy ten sklep się zmieni, gdy stan w nim się zmieni, możesz również mieć subskrypcje
tego sklepu z innych składników, subskrypcje te zostaną uruchomione, gdy twój sklep, twój stan
się zmieni, a zaktualizowany stan zostanie następnie przekazany do miejsc w Twojej
aplikacji, więc dla składników, które są zainteresowane tymi zmianami, na
przykład ten składnik może być zainteresowany niektórymi aktualizacjami, więc może skonfigurować subskrypcję i
zostanie poinformowany o aktualizacji i uzyskać
nowy stan poprzez jej aktualizację rekwizyty lub też z hakami React, jak dowiesz się w tym module.
Tak działa Redux i taka jest idea Redux.
Teraz jedna ważna uwaga, jeśli bardziej zagłębiasz się w React, prawdopodobnie znasz także interfejs API React Context,
który jest wbudowany w React.
Można to również wykorzystać w przypadku niektórych scen za kulisami i zarządzania danymi, ale nie jest to dobry zamiennik dla wszystkich
przypadków użycia, w których korzystasz z Redux.
Nie zagłębię się tutaj w to, ponieważ tak naprawdę nie jest to kurs na temat różnych konstrukcji React,
zamiast tego chcemy nauczyć się tutaj React Native, ale w załączeniu, znajdziesz trochę zasobów, które pomogą ci w tym
porównaniu między React Context API a Redux i kiedy go używać. W tym module użyjemy Reduksa, który jest bardzo elastyczny, z
którego możemy zdecydowanie korzystać i pokażę ci, jak skonfigurować go przy pomocy React
Native i jak możesz wtedy z nim pracować.