vue响应式原理探究?

发布于 2022-09-05 09:06:56 字数 928 浏览 20 评论 0

vue响应式原理探究?
test.vue

<template>
    <div>
        <!-- <li v-for="item in 10">{{i = i+1}}</li> -->
        <li>test{{i = i+1}}</li>
        <li>test{{i = i+1}}</li>
    </div>
</template>
<script>
    export default {
        data(){
            return {
                a:5,
                b:[1,2,3,4,5,6,7],
                i:0
            }
        },
        methods:{

        },
        watch:{
            i(now,next){
                console.log(now,next)
            }
        },
        mounted(){

        }
    }
</script>

<style scoped lang="scss">
    
</style>

浏览器中结果是这样子的!

clipboard.png
求解:为什么是test203 test204 而不是test1 test2?中间改变了那么多次是什么时候改变的?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

迷鸟归林 2022-09-12 09:06:56

你在{{}}里放了表达式 每次页面渲染的时候都会执行一遍啊
就相当于你在一个Interval里写了i++

愿与i 2022-09-12 09:06:56
  • 不懂你为什么要是 {{ i = i+1 }}
  • 渲染第 2 个 li 的时候,i = i + 1, 你改变 i 的属性值,由于响应式,这时候会回头渲染第一个 li , 然后又是一个 i = i + 1, 由于值又变化了,这时候会再渲染第二个 li, 周而复始,死循环了。
  • 为什么会停在 203 和 204 ,这得看源码了,在 vue.js 里面,行数图片上有,版本号 2.4.2

图片描述

图片描述

温暖的光 2022-09-12 09:06:56

我也不是非常理解(包括看了文档)。你可以看看官方文档中的这部分,可能会有帮助:https://cn.vuejs.org/v2/guide...如何追踪变化

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文