• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

React-Redux pytanie

Object Storage Arubacloud
+1 głos
128 wizyt
pytanie zadane 25 czerwca 2020 w JavaScript przez marcinszary Nowicjusz (150 p.)
zmienione kategorie 25 czerwca 2020 przez marcinszary
Witam, zaczynam przygode z reduxem i mam jedno pytanie. Powiedzmy ze w stanie mam stringa, na którym musze wykonac kilka wlasnych funkcji zeby byl gotowy do wyswietlenia. W react wystaarczylo napisac te funkcje w komponencie potem je wywolac i ustawic nowy stan. Natomiast nie zabardzo rozumiem jak to powinno wygladac z uzyciem reduxa. Czy te wszystkie funkcje powinienem napisac w switchu reducera i zwrocic nowy stan, czy moze napisac je w pliku z reducerem a w reducerze tylko wywolac,czy moze jeszcze gdzies indziej?Mam nadzieje ze rozumiecie o co mi chodzi;-)

1 odpowiedź

0 głosów
odpowiedź 26 czerwca 2020 przez JayJay Mądrala (6,020 p.)

O ile dobrze zrozumiałem, to chcesz w `state` przechowywać jakiś `string` na bazie, którego tworzysz jakiś tekst do wyświetlenia (np. coś w stylu w `state` przechowujesz `heroName`, a generujesz tekst `The greatest of the heroes: ${heroName}`).

Przechowywanie stanu (w miarę możliwości) w najprostszej postaci jest dobrą praktyką. Operacje przekształcenia go do oczekiwanej postaci (patrz wyżej) wato umieścić w `mapStateToProps`. Dodatkowo możesz utworzyć specjalną funkcję (tzw. selector), która będzie wywoływana wewnątrz `mapStateToProps` i będzie transformować stan do oczekiwanej postaci.

W tym przykładzie w `state` przechowujemy `heroName`, `selector`em jest funkcja `getHeroDescription`, a tworzoną wartością jest `description`.

const mapStateToProps = state => {
  return {
    description: getHeroDescription(state.heroName)
  };
};

IMHO ten proces jest fajnie opisany na Type of Web - React + Redux - filtrowanie listy, proste selektory

Materiały o `selector`ach w Redux:

komentarz 29 czerwca 2020 przez marcinszary Nowicjusz (150 p.)
Dzieki za odpowiedz, ale nie do konca o to mi chodzi. W moim przypadku musze wykonac pare własnych funkcji na stringu który siedzi w stanie a nastepnie ustawic nowy stan na podstawie wyniku tych funkcji. Takze dochodze do wniosku ze skoro zmieniam stan to transformacja tego stringa powinien zajac sie reducer?Np przesylam mu akcje z typem TRANSFORM_STRING oraz payload:state.string...dobrze kombinuje?;-)
komentarz 29 czerwca 2020 przez JayJay Mądrala (6,020 p.)

Tak, za operację przekształcenia istniejącego stanu do nowego stanu odpowiada `reducer`.  Jeżeli działasz tylko na `string`u, który jest jednocześnie obecnym stanem, to nie musisz przesyłać tego `string`u w `payload`. `Payload` możesz wykorzystać do przekazania wartości, która wpływa na nowy stan (np. litera dodawana do obecnego `string`a).

W tym przykładzie zwiększamy `amount` o pewną wartość `value`. `amount` jest przechowywana w stanie, a `value` jest `payload`em.

// action creator
export const increaseAmount = (value) => ({
  type: 'AMOUNT_INCREASED',
  value
});

// reducer
export const amount = (state = 0, action) => {
  switch (action.type) {
    case 'AMOUNT_INCREASED':
      return state + action.value
    default:
      return state
  }
}

Jeżeli cały ten proces przekształcania `string`a jest dość skomplikowany, warto pomyśleć o wydzieleniu z `reducer`a funkcji odpowiadających za te transformacje, ale to już chyba wiesz ;)

Warte uwagi artykuły:

 

Podobne pytania

0 głosów
1 odpowiedź 111 wizyt
pytanie zadane 28 lipca 2020 w JavaScript przez rob Bywalec (2,440 p.)
0 głosów
1 odpowiedź 121 wizyt
pytanie zadane 23 lipca 2020 w JavaScript przez rob Bywalec (2,440 p.)
0 głosów
1 odpowiedź 139 wizyt
pytanie zadane 13 czerwca 2020 w JavaScript przez rob Bywalec (2,440 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...