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

VueJS - props się zmieniają a template nie reaguje

Cloud VPS
0 głosów
264 wizyt
pytanie zadane 4 października 2018 w JavaScript przez Gambr Dyskutant (7,530 p.)

Tworzę prostą aplikację i powoli poznaje Vue. Ma ona rozwiązywać podane przez użytkownika równanie kwadratowe. Problem polega na tym, że z komponentu Output przesyłam równanie i jego rozwiązania do komponentu Roots. Sprawdzałem w Vue dev tools, Roots cały czas otrzymuje poprawne props.

Dlaczego więc template się nie aktualizuje ? 

1 odpowiedź

+1 głos
odpowiedź 5 października 2018 przez ShiroUmizake Nałogowiec (46,300 p.)
Jeżeli przesyłasz input wartość do innego komponentu potrzebujesz eventEmiter (bądż bind), przekazując wartość, jednakże w metodzie która przekazuje powinieneś uruchomić eventEmitera (spójrz dokumentacji $event). Po drugie output nie jest emiterem zdarzenia, tylko jakiś inny komponent (root ma v-bind) ale nie ma listenera w output który by nasłuchiwał, powinien być nasłuch a potem ponowne wysłanie na wskazany komponent metodą event. Osobiście radziłbym unikać takich rzeczy, lepiej użyć storeMenagment (np: Vuex), double-binding jest fajny gdy mamy rodzic-dziecko, ale dziecko-rodzic-dziecko radziłbym unikać takiej zależności. Po drugie zakładasz, że props jest zawsze obowiązkowe, czyli zakładasz, że rodzic zawsze przekaże jakieś wartości.
komentarz 5 października 2018 przez Gambr Dyskutant (7,530 p.)

Poczytałem, Vuex to faktycznie świetna rzecz, na pewno się jej nauczę. Aktualnie przerobiłem kod na taki który zamiast emitować i przesyłać props commituje je do globalnego store'a. Niestety problem jest dalej ten sam. Roots odpowiedzialne za renderowanie rozwiązań równania, otrzymuje poprawne i "świeże" dane ze store'a , jednak czasem nie aktualizuje template. Mógłbyś pomóc ?

komentarz 6 października 2018 przez ShiroUmizake Nałogowiec (46,300 p.)
Użyj watched.
komentarz 6 października 2018 przez Gambr Dyskutant (7,530 p.)

Naprawiłem problem jednak coś tu jest nie tak. Moje aktualne rozwiązanie :

  1. Output zbiera dane ze storage'a i przesyła je do dzieci jako props
  2. Dzieci odbierają props i renderują template

Dokładni ten sam scenariusz, w FunctionFormula i Delta wszystko świetnie działa. Jeślli chodzi o Roots, jedynym sposobem na stałe odświeżanie template jest obserwowanie props i używanie forceUpdate() przy każdej zmianie. Kompletnie nie rozumiem, dlaczego Roots się tak zachowuje a inne komponenty same to ogarniają. 

komentarz 7 października 2018 przez ShiroUmizake Nałogowiec (46,300 p.)
Podeślij mi na priva. Zerknę w wtorek.

Podobne pytania

0 głosów
0 odpowiedzi 321 wizyt
pytanie zadane 5 lipca 2019 w JavaScript przez aniaska4 Obywatel (1,010 p.)
0 głosów
1 odpowiedź 419 wizyt
pytanie zadane 24 grudnia 2018 w JavaScript przez Gambr Dyskutant (7,530 p.)
0 głosów
0 odpowiedzi 178 wizyt
pytanie zadane 27 września 2019 w JavaScript przez amiluke Obywatel (1,120 p.)

93,460 zapytań

142,454 odpowiedzi

322,724 komentarzy

62,838 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

Kursy INF.02 i INF.03
...