广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >关于Vue中的计算属性和监听属性详解
  • 748
分享到

关于Vue中的计算属性和监听属性详解

Vue计算属性Vue监听属性 2023-05-20 08:05:23 748人浏览 泡泡鱼
摘要

目录一、computed计算属性(1)计算属性的缓存(2)计算属性的setter二、watch监听属性一、computed计算属性 vue.js模板内的表达式非常便利,但是设计它们的

一、computed计算属性

vue.js模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的,在模板内放入过长的或复杂的逻辑时,会让模板过重且难以维护。Vue.js框架提倡使用计算属性,在一个计算属性可以完成各种复杂的逻辑,包括逻辑运算、函数调用等,只要最终返回一个结果就可以。在Vue.js框架中,所有计算属性都以函数的形式写在Vue实例的computed选项内,最终返回计算后的结果。

计算属性使用示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta Http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../../vue-2.7.14.js"></script>
</head>
<body>
    <div id="root">
        <p>原字符串:{{msg}}</p>
        <p>反转字符串:{{reverseMsg}}</p>
    </div>
    <script>
        var vm = new Vue({
            el: '#root',
            data: {
                msg: "Hello,computed!",
            },
            computed: {
                //计算属性的getter函数
                reverseMsg: function () {
                    return this.msg.split('').reverse().join('');
                }
            }
        })
    </script>
</body>
</html>

执行结果:

开发人员可以在模板中像绑定普通属性一样绑定计算属性,计算属性自动监听依赖值的变化,当其依赖属性的值发生变化时,计算属性的值会自动更新,与之相关的DOM部分也会同步更新。

(1)计算属性的缓存

从Vue.js 0.12.11版本开始,默认提供了缓存开关,可以在计算属性对象中指定cache字段来控制释放开启缓存,代码如下:

            computed: {
                //关闭缓存,默认为true
                cache:true,
                //计算属性的getter函数
                reverseMsg: function () {
                    return this.msg.split('').reverse().join('');
                }
            }

上述代码中,设置cache为false关闭缓存之后,每次访问计算属性reverseMsg时都会重新执行getter方法

(2)计算属性的setter

每个计算属性都包含一个getter和setter,上面的例子都是计算属性默认用法,只是利用了getter来读取,在开发人员需要时,也可以提供一个setter函数,手动修改计算属性就像修改一个普通属性那样,就会触发setter函数,执行一些自定义的操作。

计算属性setter示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../../vue-2.7.14.js"></script>
</head>
<body>
    <div id="root">
        姓名:{{fullName}}
    </div>
    <script>
        const vm = new Vue({
            el: '#root',
            data: {
                firstName: "Emily",
                lastName: "Ford"
            },
            computed: {
                fullName: {
                    get: function () {
                        return this.firstName + " " + this.lastName;
                    },
                    set: function () {
                        var name = newValue.split("");
                        this.firstName = names[0];
                        this.lastName = names[1];
                    }
                }
            }
        })
    </script>
</body>
</html>

执行结果:

绝大多数情况下,只会使用默认的getter函数来读取一个计算属性,在业务中很少使用到setter,所以在声明一个计算属性的时候,可以直接使用默认的写法,不必将getter和setter都声明。

二、watch监听属性

Vue.js中的事件处理方法可以根据用户的需要自定义,能通过单击事件、焦点事件、鼠标事件等触发条件来触发,但是不能自动监听当前Vue实例对象的状态变化。为了解决上述问题,Vue.js提供了watch状态监听功能,只要监听到当前Vue实例中的数据变化,就会调用当前数据所绑定的事件处理方法。

wathch监听属性的示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../../vue-2.7.14.js"></script>
</head>
<body>
    <div id="root">
        千米:<input type="text" v-model="kilometers">
        米:<input type="text" v-model="meters">
        <p id="info"></p>
    </div>
    <script>
        const vm = new Vue({
            el: '#root',
            data: {
                kilometers: 0,
                meters: 0,
            },
            watch: {
                //监听kilometers数据
                kilometers: function (val) {
                    this.kilometers = val;
                    this.meters = this.kilometers * 1000;
                },
                //监听meters数据
                meters: function (val) {
                    this.meters = val;
                    this.kilometers = val / 1000;
                }
            }
        });
        //$watch是Vue.js的api提供的一个方法,用来监听变量的数据变化
        vm.$watch("kilometers", function (newVal, oldVal) {
            document.getElementById("info").innerHTML = "修改前:" + oldVal + ", 修改后:" + newVal;
        })
    </script>
</body>
</html>

执行结果:

上述代码中,通过data数据选项定义了kilometers和meters数据,并使用v-model进行双向数据绑定,通过watch选项定义了监听器,监听当前Vue实例中kilometerhe和meters数据的变化

虽然大多数情况计算属性都可以满足需要,但有时还是需要使用监听属性。当需要在数据发生变化时执行异步操作或开销较大的操作时,就需要使用监听属性

computed与watch有什么区别?

(1)computed:监测的是依赖值,在依赖值不变的情况下其会读取缓存进行复用,在变化的情况下才会重新计算;computed是同步的;computed中的函数都是带返回值的。

(2)watch:监测的是属性值,只要属性值发生变化,其都会触发执行回调函数来执行一系列操作;watch可以实现异步;watch里面的函数可以不写返回值

简单来说,computed能做的,watch都能做,反之则不行。

到此这篇关于关于Vue中的计算属性和监听属性详解的文章就介绍到这了,更多相关Vue的计算属性和监听属性内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 关于Vue中的计算属性和监听属性详解

本文链接: https://www.lsjlt.com/news/214254.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 关于Vue中的计算属性和监听属性详解
    目录一、computed计算属性(1)计算属性的缓存(2)计算属性的setter二、watch监听属性一、computed计算属性 Vue.js模板内的表达式非常便利,但是设计它们的...
    99+
    2023-05-20
    Vue 计算属性 Vue 监听属性
  • Vue监听属性和计算属性
    目录一、watch监听属性 1.购物车 2.全选与取消全选 二、计算属性 1.computed 2.methods 3.setter 一、watch监听属性 这个属性用来监视某个数...
    99+
    2022-11-12
  • Vue中的计算属性与监听属性
    目录一、为什么要使用计算属性什么是计算属性二、计算属性和方法的区别1、区别2、计算属性使用场景三、修改计算属性的值总结四、监听属性1、监听普通属性2、监听属性和计算属性的区别3、监听...
    99+
    2022-11-13
  • Vue监听属性和计算属性怎么使用
    这篇文章主要讲解了“Vue监听属性和计算属性怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue监听属性和计算属性怎么使用”吧!一、watch监听属性这个属性用来监视某个数据的变化,...
    99+
    2023-06-25
  • Vue中的计算属性与监听属性怎么用
    今天小编给大家分享一下Vue中的计算属性与监听属性怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、为什么要使用计算属...
    99+
    2023-06-29
  • 详解Vue的监听属性
    目录Vue监听属性什么是监听属性?监听属性和计算属性的区别?监听属性的使用深度监听立即调用总结Vue监听属性 什么是监听属性? 所谓监听就是对内置对象的状态或者属性变化进行监听并且做...
    99+
    2022-11-12
  • 关于vue中计算属性computed的详细讲解
    目录1.定义2.用法3.computed的响应式依赖(缓存)4.应用场景附:计算属性的 getter 与 setter总结1.定义 computed是vue的计算属性,是根据依赖关系...
    99+
    2022-11-13
  • Vue中监视属性和计算属性区别解析
    目录计算属性需求使用watch实现准备工作测试测试在computed当中书写总结计算属性 顾名思义,计算属性就是计算出来的属性,英文名儿computed这里要和data和method...
    99+
    2022-11-13
    vue监视属性 vue计算属性
  • Vue计算属性与监视属性实现方法详解
    目录一、计算属性1、插值语法实现2、通过方法实现3、通过计算属性二、监视属性三、深度监视一、计算属性 在开发中,可以有这样的需求,在属性(date)中,有fistName和lastN...
    99+
    2022-11-13
  • 简单聊聊Vue中的计算属性和属性侦听
    目录1. 计算属性语法:  1.简写方式:语法:  2.完整写法: 2. 监视(侦听)属性 1. 监视属性watch:2. 深度监视3. 区别和原则总结1. 计算...
    99+
    2022-11-12
  • Vue中computed(计算属性)和watch(监听属性)的用法及区别说明
    目录计算属性computed侦听属性watch计算属性computed 支持缓存,只有依赖数据发生改变,才会重新进行计算 不支持异步,当computed内有异步操作时无效,无法监听数...
    99+
    2022-11-13
  • Vue中的 watch监听属性详情
    目录一.watch监听一般数据的变化(数值,字符串,布尔值)1.数值2.字符串3.布尔值二.watch 监听 复杂类型数据的变化1.对象2.数组3.对象数组4.对象数组的属性首先要确...
    99+
    2022-11-12
  • JavaScript计算属性与监视(侦听)属性的使用
    监视属性(watch)watch监视(侦听)器允许开发者监视数据的变化,从而针对数据的变化做特定的操作。监视的两种方法通过new Vue时传入watch配置:<div id="root"> <i...
    99+
    2023-05-14
    javascript
  • Vue计算属性与监视(侦听)属性的使用深度学习
    目录计算属性(computed)监视属性(watch)监视的两种方法immediate选项深度监视计算属性(computed) 计算属性指的是通过一系列运算之后,最终得到一个值。这个...
    99+
    2022-11-13
    vue计算属性和侦听属性 vue计算属性 vue监视属性
  • Vue监听属性图文实例详解
    目录 什么是监听属性?监听属性和计算属性的区别?监听属性的使用深度监听立即调用写在最后 什么是监听属性? 所谓监听就是对内置对象的状态或者属性变化进行监听并且做出反应的响应,监听属性...
    99+
    2022-11-12
  • 计算属性和侦听器详情
    目录1、计算属性1.1 基础例子1.2 计算属性缓存 vs 方法1.3 计算属性 vs 侦听属性1.4 计算属性的 setter2、侦听器1、计算属性 模板内的表达式非常便利,但是设...
    99+
    2022-11-12
  • 关于Vue中的watch监视属性
    目录一、监视属性watch二、深度监视天气案例:三、监视属性简写一、监视属性watch 1.当被监视的属性变化时,回调函数自动调用,进行相关操作 2.监视的属性必须存在,才能进行监视...
    99+
    2023-05-17
    Vue watch Vue watch监视属性 watch监视属性
  • Vue之计算属性详解
    1、何为计算属性:大白话讲就是计算出来的结果保存在属性当中,可以想象为缓存。 <!DOCTYPE html> <html lang="en"> <h...
    99+
    2022-11-12
  • Vue计算属性与监视属性详细分析使用
    目录计算属性(computed)监视属性(watch)监视的两种方法immediate选项深度监视计算属性(computed) 计算属性指的是通过一系列运算之后,最终得到一个值。这个...
    99+
    2022-11-13
    Vue计算属性与监视属性 Vue计算属性 Vue监视属性
  • Vue中监视属性和计算属性的区别是什么
    这篇文章主要讲解了“Vue中监视属性和计算属性的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue中监视属性和计算属性的区别是什么”吧!计算属性顾名思义,计算属性就是计算出来的属...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作