Wpis z mikrobloga

#react #javascript #webdev #frontend

znowu nie wiem za bardzo o co temu reactowi chodzi za bardzo. Potrzebuję po kliknięciu zmieniać amount na odpowiednio +1 -1.
Doszedłem samemu kwestii kontekstu elementów renderowanych przez .map, ale teraz nie wiem jak zmienić stan tego czegoś i wydaje mi się, że próbowałem już wszystkiego. Docs niestety nie jest zbyt pomocne w tym przypadku.

konsola sypie:

this.state.products[key] is undefined


pastebin
  • 16
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@MKULTRA: Skąd w ogóle to key jako argument do event handlera? Przecież to jest pewnie obiekt eventu, a ty próbujesz go wykorzystać jako klucz. Byś .jsx pokazał
  • Odpowiedz
@MKULTRA: Ogólnie masz sporo błędów i chyba mam wrażenie że nie do końca wiesz co robisz :P poprawny kod funkcji handleMinus:

handleMinus(key) {
var stateCopy = Object.assign({}, this.state);
stateCopy.products[key].amount
  • Odpowiedz
najpierw naucz sie vanilla JS a nie od razu frameworki ( ͡° ʖ̯ ͡°)


@MKULTRA: W sumie dokładnie tak jak kolega napisał. Zrozumienie jak działa język pomogłoby ci rozwiązywać takie problemy jak ten bez potrzeby zgadywania na ślepo, po prostu wiedziałbyś co jest nie tak i to zmienił.
  • Odpowiedz
@Marmite: ostatecznie do tego doszedłem, że nic mu nie passuje tam. JS w miarę dobrze ogarniam (jak na swój poziom) i najwięcej pykam w czystym właśnie. Problem takiego małpiego rzucania wszystkiego co się da w kod wynika pewnie z braku zrozumienia state i props w react, a no na błedach się najlepiej pewnie uczy.
  • Odpowiedz
@Marmite: @MKULTRA: Jeśli chcesz polegać na poprzednim stanie i na jego podstawie ustawiać kolejny to lepiej jest użyć:

this.setState((state, props) => {
const newState = Object.assign({}, state);
newState.products[key].amount -= 1;
return newState;
});
  • Odpowiedz