#vue.js #vuejs3
Вопрос:
<span>{{ count }}</span> <- output: 104 why not 3
<span>{{ move() }}</span> <- output: 104 why not 4
<script>
data() {
return {
count: 3
}
},
methods: {
move() {
return this.count ;
}
}
</script>
[Предупреждение Vue]: Превышено максимальное количество рекурсивных обновлений в компоненте . Это означает, что у вас есть реактивный эффект, который изменяет свои собственные зависимости и, таким образом, рекурсивно запускает себя. Возможные источники включают шаблон компонента, функцию рендеринга, обновленный хук или функцию источника наблюдателя.
Почему…не 3 или 4?
Ответ №1:
это потому, что у вас есть move()
шаблон, и каждый раз, когда шаблон отображается, значение обновляется, в результате чего шаблон отображается снова.
Это рекурсия, о которой браузер уведомил, что вы превысили максимальное количество, остановившись на 104.
Вы можете назначить функцию для выполнения по щелчку мыши следующим образом:
<span>{{ count }}</span>
<span @click="move">move</span>
<script>
data() {
return {
count: 3
}
},
methods: {
move() {
return this.count ;
}
}
<script>
Ответ №2:
Вы создаете рекурсивный рендеринг при изменении count
, если вы хотите распечатать, вы можете добавить его и избежать изменения count
new Vue({
el: '#app',
data() {
return {
count: 3
}
},
methods: {
move() {
return this.count 1;
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<span>{{ count }}</span>
<span>{{ move() }}</span>
</div>