vue2.x版本中computed和watch的使用入门详解

更新日期: 2022-03-23 阅读: 1.5k 标签: watch

前言

在基于vue框架前端项目开发过程中,只要涉及到稍微复杂一点的业务,我们都会用到computed计算属性这个钩子函数,可以用于一些状态的结合处理和缓存的操作。

基础使用

在computed中,声明一个函数,并需要提供一个返回值,用于在页面展示或者结合其他方法进行处理

结合state状态使用

通过changeName返回一段依赖于name的字符串

<li>computed基本使用</li>
<li>name值:{{ name }}</li>
<li>{{ changeName }}</li>

data() {
        return {
            name: "zhangsan",
        };
    },

computed: {
    changeName: function () {
        return `一段依赖于name:${this.name}的文字`;
    },
},

使用其他组件状态

主动触发computed方法,对比不依赖于其他状态下的区别,通过点击事件,主动触发一些操作

<li>{{ isCache }}</li>
<li>{{ cacheTip }}</li>
<li>{{ changeCache }}</li>
<li><button @click="handleChange">修改文字</button></li>

data() {
    return {
        cacheTip: "cacheTip原始值",
    };
},

computed: {
    isCache: function () {
        return `不依赖于任何属性值的一段文字`;
    },
    changeCache: function () {
        return `依赖于cacheTip,${this.cacheTip}`;
    },
},

methods: {
    handleChange() {
        this.cacheTip = "cacheTip状态被修改";
    },
},

当我们点击修改状态时,可以看到,cacheTip被修改只会,依赖于cacheTip的changeCache也会发生改变

isCache因为不和其他状态关联,所以还是保持原来的值不变

getter VS setter

上面的cacheTip,或者isCache,在computed的通用方法中,默认都是使用了getter方法去获取处理过的值

可以写成

isCache: {
    setter:function () {
        return `不依赖于任何属性值的一段文字`;
    }
}

通过getter和setter,可以进一步对需要处理的状态进行处理

<li>{{ firstName }}</li>
<li>{{ lastName }}</li>
<li>{{ setterGetter }}</li>
<li><button @click="handleChangeFirst">修改文字</button></li>

data() {
    return {
        firstName: "lewyon001",
        lastName: "布欧001",
    };
},

computed: {
    setterGetter: {
        // getter
        get: function (newValue) {
            console.log("newValue", newValue);
            return this.firstName + " " + this.lastName;
        },
        // setter
        set: function (newValue) {
            console.log("newValue", newValue);
            this.firstName = `${newValue.firstName}`;
            this.lastName = `${newValue.lastName}`;
        },
    },
}

methods: {
    handleChangeFirst() {
        this.setterGetter = { firstName: "lewyon", lastName: "布欧" };
    },
},

get属性可以获取最原始的依赖值并处理,

set方法,可以获取修改后的依赖值,在修改之后一并展示到页面上或者进行其他业务需要的处理

computed方法的基础,包括进阶的操作,以及setter和getter方法如上

使用建议

作为经常使用的方法,

  • computed可以作为依赖于其他状态的缓存进行使用,包括一些不经常更新的内容,减少开销
  • 简单的字符串模板结合其他状态
  • 还有其他的场景在开发中,我们都可以进行使用,结合watch等。

文章个人博客地址: vue2.x版本中computed和watch的使用入门详解-computed篇


本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!

链接: https://fly63.com/article/detial/11281

vue watch对象内的属性监听

为什么要注销 watch?因为我们的组件是经常要被销毁的,比如我们跳一个路由,从一个页面跳到另外一个页面,那么原来的页面的 watch 其实就没用了,这时候我们应该注销掉原来页面的 watch 的,不然的话可能会导致内置溢出

vue之watch属性使用方法

vue中使用了watch侦听属性用来监听和响应 Vue实例上的数据变动.下面的代码展示的是watch属性的完整用法,在工作中发现可以根据不同的情况使用watch属性有三种不同的写法

Vue.js watch监视属性

这个属性用来监视某个数据的变化,并触发相应的回调函数执行,添加watch属性,值为一个对象。对象的属性名就是要监视的数据,属性值为回调函数,每当这个属性名对应的值发生变化

watch监听对象

deep然而,当我们监听的数据是比较深层次,比如要监听的数据是一个对象,就需要用到deep这个属性,属性默认为false;我之前比较有误解的地方就是,总是会以为如果监听的数据如果是在一个对象中,就要使用deep;

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!