本文介绍: computedwatch都是基于watcher实现computed属性是具备缓存的,依赖的值不发生变化,对其取值计算属性方法不会重新执行watch监控值的变化,当值发生变化时调用对应回调函数我们要进行数计算,而且依赖于其他数据,那么把这个数据设计computed如果你需要在某个数据变化时做一些事情,使用watch来观察这个数据变化。

Computed本质一个具备缓存watcher,依赖的属性发生变化就会更新视图。 适用于计算比较消耗性能计算场景。当表达式过于复杂时,在模板中放入过多逻辑会让模板难以维护,可以复杂逻辑放入计算属性中处理

computed擅长处理一个数据受多个数影响

computed计算属性,也就是计算值,它更多用于计算值的场景

computed具有缓存性,computed的值在getter执行后是会缓存的,只有在它依赖的属性值改变之后,下一次获取computed的值时才会重新调用对应getter来计算

computed用于计算比较消耗性能的计算场景

<template&gt;{{fullName}}</template&gt;
export default {
    data(){
        return {
            firstName: 'zhang',
            lastName: 'san',
        }
    },
    computed:{
        fullName: function(){
            return this.firstName + ' ' + this.lastName
        }
    }
}

watch用于观察和监听页面上的vue实例,如果要在数据变化的同时进行异步操作或者是比较大的开销,那么watch为最佳选择

Watch没有缓存性,更多的是观察的作用可以监听某些数据执行回调。当我们需要深度监听对象中的属性时,可以打开deeptrue选项,这样便会对对象中的每一项进行监听。这样会带来性能问题优化的话可以使用字符串形式监听,如果没有写到组件中,不要忘记使用unWatch手动注销

watch擅长处理:一个数影响个数据。
更多的是「观察」的作用,类似于某些数据的监听回调,用于观察props $emit或者本组件的值,当数据变化时来执行回调进行后续操作
缓存性,页面重新渲染时值不变化也会执行

<template&gt;{{fullName}}</template&gt;
export default {
    data(){
        return {
            firstName: 'zhang',
            lastName: 'san',
            fullName: 'zhang san'
        }
    },
    watch:{
        firstName(val) {
            this.fullName = val + ' ' + this.lastName
        },
        lastName(val) {
            this.fullName = this.firstName + ' ' + val
        }
    }
}

总结

computedwatch都是基于watcher来实现

computed属性是具备缓存的,依赖的值不发生变化,对其取值时计算属性方法不会重新执行

watch监控值的变化,当值发生变化时调用对应的回调函数

当我们要进行数值计算,而且依赖于其他数据,那么把这个数据设计computed

如果你需要在某个数据变化时做一些事情,使用watch来观察这个数据变化

回答范例

  1. 计算属性可以从组件数据派生出新数据,最常见的使用方式设置一个函数返回计算之后的结果computedmethods的差异是它具备缓存性,如果依赖项不变时不会重新计算。侦听器可以侦测某个响应式数据的变化并执行作用,常见用法传递一个函数执行作用,watch没有返回值,但可以执行异步操作复杂逻辑
  2. 计算属性常用场景简化行内模板中的复杂表达式,模板中出现太多逻辑会是模板变得臃肿不易维护。侦听器常用场景状态变化之后做一些额外的DOM操作或者异步操作选择采用何用方案时首先看是否需要派生出新值,基本能用计算属性实现方式首选计算属性.
  3. 使用过程中有一些细节比如计算属性也是可以传递对象成为既可读又可写的计算属性。watch可以传递对象,设置deepimmediate等选项
  4. vue3中watch选项发生了一些变化,例如不再能侦测一个点操作符之外的字符串形式的表达式reactivity API中新出现了watch、watchEffect可以完全替代目前的watch选项,且功能更加强大

原文地址:https://blog.csdn.net/formylovetm/article/details/134697332

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_32970.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注