React lub Preact + Redux to bardzo silne połączenie, dające możliwość tworzenia skomplikowanych aplikacji typu SPA, ale istnieje alternatywa, która zajmuje tylko 1KB zminimalizowana z kompresją gzip.
Jeśli musisz stworzyć małą aplikację typu SPA, react+redux lub preact+redux może być zabójcze. Biblioteki zewnętrzne będą zajmowały więcej niż cała aplikacja. Na szczęście jest alternatywa, czyli mała biblioteka hyperapp, która tak jak react i preact korzysta z jsx.
Przykładowa aplikacja korzystająca z tej biblioteki wygląda tak:
Cała aplikacja w hyperapp składa się z 3 części stanu, widoku oraz akcji:
1. Stan
Globalny obiekt, który jest tylko do odczytu.
2. Akcje
Obiekt, którego metody zmieniają stan, zwracają nowy obiekt, który jest łączony z aktualnym stanem. Nie ma potrzeby używania Object.assign
wystarczy zwrócić część obiektu, która się zmienia. Można używać asynchronicznych akcji, ponieżej przykład takiej akcji:
Akcje mogą przyjmować jeden parametr jako trzeci argument, jeśli potrzebujemy użyć więcej parametrów możemy przekazać obiekt, możemy też skorzystać z de-strukturyzacji w ES6. np:
i wywołujemy ją w ten sposób:
Możemy używać ES6 bo i tak będziemy musieli użyć transpilera, aby zamienić jsx na js, więc możemy przy okazji skorzystać z ES6.
2. Widok
Funkcja która zwraca jsx. Można tworzyć nowe komponenty (nazywane po angielsku custom tags lub widgets) jako funkcje zwracające jsx, przykładowy komponent wygląda tak:
i można go użyć tak:
Nazwy komponentów muszą zaczynać się wielką literą. Jeśli chcemy skorzystać, wewnątrz komponentów, z akcji lub stanu musimy niestety przekazać je jawnie jako właściwości (ang. props).
Na codepen możecie zobaczyć przykładową aplikacje TODO, napisaną przez mnie, która bazuje na TodoMVC, ale nie wszystko jest zaimplementowane (brakuje przełączania widoków). Jest także oficjalna wersja TodoMVC, trochę bardziej skomplikowana, na tej stronie. Zawiera ona wszystkie funkcje, włączając router.
Komentarze
Hasło, które podasz umożliwi ponowne zalogowanie się i np. usunięcie komentarza, jest dobrowolne. Email jest szyfrowany i używany do wysyłania powiadomień o odpowiedziach do komentarzy oraz do pobierania awatara dzięki usłudze Gravatar.com.