computed:一个属性值随其它值变化,一般页面显示

1. computed擅长处理的场景:一个数据受多个数据影响
    computed拥有缓存属性,
    只有当依赖的数据发生变化时,关联的数据才会变化,
    适用于计算或者格式化数据的场景.
    
        总结:模板中的表达式简洁,易维护
           1. 变量不在data中定义,而是定义在computed,写法跟些方法一样,有返回值(return 出来),函数名直接在页面中渲染,不需要小括号
           2. 根据传入的变量的变化 进行结果的更新
           3. 计算属性属于响应式依赖进行缓存,如果其中的没有值改变,则它调用的就是上一次 计算缓存的数据,因此提高了性能
              而methods中每一次调用就会重新计算 一次,为了进行不必要的资源浪费,选择计算属性
              

watch:监听值变化,然后进行某些操作

2. watch擅长处理的场景:一个数据影响多个数据
    watch: 监听
        当一条数据影响多条时就需要用到watch

immerdiate 属性

通过声明 immediate 选项为 true,可以立即执行一次 handler。

watch 并不适用于显示某一个数据以及数据的拼装等。watch 用在监听数据变化,做某些指令操作(给后台发数据请求)

deep属性(深度监听时)

不使用 deep 时,当我们改变 obj.a 的值时,watch不能监听到数据变化,默认情况下,handler 只监听属性引用的变化,也就是只监听了一层,但改对象内部的属性是监听不到的

通过使用 deep: true 进行深入观察,这时,我们监听 obj,会把 obj 下面的属性层层遍历,都加上监听事件,这样做,性能开销也会变大,只要修改 obj 中任意属性值,都会触发 handler.

Logo

前往低代码交流专区

更多推荐