Możesz mieć nieskończoną pętlę aktualizacji w funkcji renderowania składnika
Jestem nowy w VueJS, mam ostrzeżenie od Vue,
[Vue warn]: You may have an infinite update loop in a component render function.
Kiedy używam zmiennej V-for w V-bind: style, oto przykład:
w szablonach:
<div v-for="item in model.items" v-bind:class="test(item.result)">
{{item.id}}
w skryptach:
data() {
return {
accept: false,
not_accept: false,
};
},
methods: {
test(result) {
if (result == 'accept') {
this.accept = true;
this.not_accept = false;
} else if (result == 'Not accept') {
this.accept = false;
this.not_accept = true;
} else {
console.log(result);
} return {
success: this.accept,
danger: this.not_accept,
};
},
},
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
3 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
- Jesteś w metodzie renderowania renderowania listy elementów przy użyciu wartości stanu
UWAGA: metoda renderowania jest uruchamiana po każdej zmianie stanu<ol start="2">
[*]
Następnie próbujesz powiązać klasę na podstawie wyniku działania funkcji , ta funkcja jest błędna, ponieważ próbuje ponownie zmienić stan, powodując pętlę render-test-render.
[/*]
[/list]
Możesz rozwiązać ten problem, upewniając się, że funkcja testowa nie zmienia stanu, na przykład:
Mam nadzieję, że to pomogło!
Anonimowy użytkownik
Potwierdzenie od:
Nie jestem pewien, dlaczego otrzymałeś to ostrzeżenie, ale oto, co myślę.
Obserwator monitoruje zmiany w , i ... Każda zmiana tych wartości spowoduje ponowne renderowanie po ponownym wywołaniu . Ale w ramach zmieniasz i , więc Vue musi ponownie sprawdzić, czy wynik zmienił się z tego powodu i póki może
jeszcze raz
zmień i i tak dalej.
Powiązanie i dane są nieprawidłowe. ustawi to samo dla każdego elementu, ale wygląda na to, że potrzebujesz niestandardowego stylu dla każdego elementu w zależności od . Naprawdę nie powinieneś zmieniać żadnej z właściwości wewnątrz .
Trudno udzielić wyczerpującej odpowiedzi, ponieważ nie jestem do końca pewien, jak działa twój komponent i co powinien robić.
Anonimowy użytkownik
Potwierdzenie od:
Zrobiłem zwyczaj
dyrektywy, aby załadować dane za pośrednictwem AJAX, gdy wyświetlana jest karta ładowania początkowego
https://gist.github.com/jessli ... 2c1de
.
To jest złe:
>
Tutaj wydaje się, że vue wywołuje funkcję (a raczej ocenia wyrażenie) i przekazuje wynik do dyrektywy.
To jest dobre:
>
Tutaj przekazuję funkcję po nazwie, abym mógł ją nazwać w dyrektywie.