Mai mult
Poți forța Vue.js pentru a reîncărca/re-face?
Doar o întrebare rapidă.
Poți forța Vue.js pentru a reîncărca/recalcula totul? Dacă da, cum?
178
16
Încercați această vrajă:
Nu este nevoie pentru a crea orice agățat vars :)
Actualizare: am găsit această soluție, atunci când am început să lucrez cu VueJS. Cu toate acestea explorarea în continuare această abordare s-a dovedit ca de o cârjă. Pe cât îmi amintesc, într-o vreme am scăpat de ea pur și simplu pune toate proprietățile care nu a reușit să reîmprospăta automat (cea mai mare parte imbricate cele) calculat în proprietăți.
Mai multe informatii aici: https://vuejs.org/v2/guide/computed.html
Acest lucru pare a fi destul de curat soluție de matthiasg pe această problemă:
Pentru caz de utilizare, am hrănit o Vuex getter într-o componentă ca un propunerii. Cumva Vuex-ar aduce date dar reactivitatea n't fiabil lovi cu piciorul în rerender componenta. În cazul meu, stabilirea componentei "cheia" de la un atribut pe prop garantat o reîmprospătare atunci când getters (și atributul) în cele din urmă rezolvată.
De ce?
...te trebuie pentru a forța o actualizare?
Poate că nu sunt explorarea Vue la cele mai bune:
Vezi comentarii în demo-ul de mai jos. Sau deschide [același demo într-un JSFiddle aici][1].
Să stăpânească această parte a Vue, verificați Documente Oficiale pe Reactivitate - Detectare Schimbare Limitări. Aceasta este o trebuie să citească!
Folosesc neg.$set('varName', valoare)`. Uita-te pentru detalii în Change_Detection_Caveats.
Vă rugăm să citiți acest http://michaelnthiessen.com/force-re-render/
În mod oribil: reîncărcarea întregii pagini
Modul teribil: folosind v-dacă hack
Cel mai bun mod: utilizarea Vue built-in forceUpdate metodă
Cel mai bun mod: cheie-schimbare pe site-component
Am folosi, de asemenea, uita-te la: în unele situații.
Încercați să folosiți asta.$router-ul.du-te(0); manual reîncarcă pagina curentă.
Sigur .. puteți folosi pur și simplu atribut esențial pentru a forța re-randare (de recreere), în orice moment.
<mycomponent :cheie="somevalueunderyourcontrol"></mycomponent>
Vezi https://jsfiddle.net/mgoetzke/epqy1xgf/ pentru un exemplu
Acesta a fost, de asemenea, discutate aici: https://github.com/vuejs/Discussion/issues/356#issuecomment-336060875
folosind v-dacă directiva
Deci, pur și simplu prin schimbarea valorii trulyvalue de la false la true va determina componenta între div a rerender din nou
Am găsit o cale. L's un pic mai ieftin, dar funcționează.
Unde
vm
este punctul dumneavoastră de vedere-modelul obiect, iar " x " este un non-existent variabilă.Vue.js se va plânge de acest lucru în jurnalul consola dar nu declanșa o actualizare pentru toate datele. Testat cu versiunea 1.0.26.
Aceasta a lucrat pentru mine.
Cealaltă componentă incendii refresh-magazine-lista de evenimente vor provoca la componenta actuala a rerender
împreună cu acesta a folosi asta.$set(obj,'obj_key',valoare)
si update
uniqueKey pentru fiecare actualizare în obiect (obj) valoarea pentru fiecare actualizare asta.uniqueKey++`ea a lucrat pentru mine în acest fel
În scopul de a reîncărca/re-render/refresh componentă, opri codificările lung. Există o Vue.JS mod de a face asta.
Doar folosi:cheie` atribut.
De exemplu:
``
``Eu sunt, folosind ca unul din BS Vue Slot de Masă. Spun că voi face ceva pentru această componentă deci face unic.
O altă modalitate este de a implica
vue-router
care este de obicei folosit oricum, în cele mai multe aplicații.De exemplu, aveți nevoie pentru a reîmprospăta/cauza update cârlige' executarea pe toate/numai unele componente de la a ajunge la o pagină. Poti fi interesat actualizarea nu traseului component (nu este folosit în dirijarea secțiune ca și component's valoarea proprietatii), astfel navigarea gardienii nu se va declanșa. De asemenea, componenta în cauză pot fi reutilizate, adică Vue poate o ia din cache, evitând declanșarea ciclului de viață cârlige. Deci, în acest caz încă mai poate atinge obiectivul de a trece un unic valoarea de la router la traseu componentă ca
Atunci ar trebui să accepte acest prop ca recuzită: ['timestamp']` în traseu componentă și trece în jos pentru copilul componente în care actualizarea sunteți interesat. Apoi, utilizați-l acolo ca un atribut pe un element sau în interiorul invizibil tag. Dacă tu nu't folosi oriunde în șablon, acesta nu va provoca nici un update, daca ai face - orice moment te-a lovit ca traseu o valoare unică este generat și a trecut în jos pentru ruta componentă și copii în cazul în care vă puteți provoca actualizarea lor cu ajutorul trecut prin elemente de recuzită valoarea din șablon.
:cheie="$rută.params.param1" utilizați doar cheie cu orice params sale auto reload copii..
A lucrat pentru mine
Am avut această problemă cu o galerie de imagini pe care am vrut să rerender datorită modificărilor făcute pe o altă filă. Deci tab1 = imageGallery, fila2 = favoriteImages
tab @modifica="updateGallery()" -> această forțele mele v-pentru directiva pentru a procesa filteredImages funcția de fiecare dată când mă comuta între file.