Vue计算属性和监视属性

news2024/11/17 23:31:40

目录

计算属性computed

监事属性

深度监视


计算属性computed

计算属性:

定义:要用的属性不存在,要通过已有属性计算得来

2、原理:底层借助了Object.defineproperty方法提供的getter和setter

3、get函数什么时候执行?

  • 1、初次读取时会执行一次。
  • 2、当依赖的数据发生改变时会被在次调用

4、优势:与methods实现相比,内部有缓存机制(复用),效率更高,调试方便。

5、备注:

1、计算属性最终会出现在vm上,直接读取使用即可。

2、如果计算属性要被修改,那必须写set函数去响应,,且set中要引起计算是依赖的数据发生变化

<!DOCTYPE html>
<html lang="en" xmlns:v-model="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--vue-->
    <script src="https://cdn.staticfile.org/vue/2.7.0/vue.min.js"></script>

</head>

<div id="root">

    姓:<input type="text" v-model:value="firstName"></br><br>
    名:<input type="text" v-model="lastName"></br><br>
全名:{{allName}}
</div>


<script type="text/javascript">
   vm = new Vue({
        el: '#root',
        data: {
            firstName:"孔",
            lastName:"超"
        },
        computed:{
            allName:{
                //get在当有人读取allName的时,get就会被调用,且返回值就作为allName的值
                //get什么时候被调用?1、初次读取allName时。2、所依赖的数据发生拜年话式
                get(){
                    //this就是当前vue对象,里面有所有属性
                    return this.firstName+"-"+this.lastName;
                },
               //当allName被修改时,set方法调用
                set(value){ //value就是all被修改后的值
                    const arr=value.split('-')//value得是String,以-作为分隔符,将这个字符串分割成数组
                    this.firstName=arr[0]
                    this.lastName=arr[1]
                }
            }

        }

    });
    console.log(vm)

</script>

<body>

</body>
</html>

运行结果 

 计算属性-天气案例

<div id="root">
今天天气很{{info}}
    <button @click="change">点击切换</button>
</div>


<script type="text/javascript">
    const vm = new Vue({
        el: '#root',
        data: {
            isHot:true
        },
        methods: {
            change(){
                this.isHot=!this.isHot
            }
        },
        computed: {
            info() {
                return this.isHot? "炎热" : "凉爽"
            }
        }

    });
    console.log(vm)

</script>

监事属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>监视属性</title>
    <!--vue-->
    <script src="https://cdn.staticfile.org/vue/2.7.0/vue.min.js"></script>

</head>

<div id="root">
    今天天气很{{info}}
    <button @click="change">点击切换</button>
</div>


<script type="text/javascript">
    const vm = new Vue({
        el: '#root',
        data: {
            isHot: true
        },
        methods: {
            change() {
                this.isHot = !this.isHot

            }
        },
        computed: {
            info() {
                return this.isHot ? "炎热" : "凉爽"
            }
        },
        watch: {
            isHot: {
                // immediate是否立即执行
                immediate:true,
                //handler什么时候调用?当isHot发生改变时调用
                handler(newV, oldV) {
                    // console.log(Math.ceil(Math.random()*10))
                    console.log("isHot被修改了," + newV+"---" + oldV)
                }
            }
        }

    });
    console.log(vm)

</script>

<body>

</body>
</html>

另一种写法

    vm.$watch('isHot',{
        // immediate是否立即执行
        immediate:true,
        //handler什么时候调用?当isHot发生改变时调用
        handler(newV, oldV){
            // console.log(Math.ceil(Math.random()*10))
            console.log("isHot被修改了," + newV+"---" + oldV)
        }}
    )
    console.log(vm)

</script>

监事属性watch:

1、当被监视的属性变化时,回调函数自动调用,进行相关操作

2、监视的属性必须存在,才能进行监视

3、监视的两种写法

  1. new Vue时传入watch配置
  2. 通过vm.$watch监视

深度监视

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--vue-->
    <script src="https://cdn.staticfile.org/vue/2.7.0/vue.min.js"></script>

</head>

<div id="root">
b:{{number.a}}
    <button @click="number.a++">点击a的值加1</button>
    b:{{number.b}}
    <button @click="number.b++">点击a的值加1</button>
</div>


<script type="text/javascript">
    const vm = new Vue({
        el: '#root',

        data: {
            number:{
                a:10,
                b:20
            },
        },
        methods: {

        },
        watch:{
            number: {
                //开启深度监视,number中每一个值变化都会变
                deep:true,
                handler() {
                    console.log("number的值变了")
                }
            },
           // 其中的值
           "number.a": {

                handler() {
                    console.log("a的值变了")
                }
            }
        }

    });
    console.log(vm)

</script>

<body>

</body>
</html>

1、Vue中的watch默认不见时对象内部值的改变(一层)

2、配置deep:true可以检测对象内部值改变(多层)

备注:

1、Vue自身可以检测对象内部值的改变,但Vue提供的watch默认不可以

2、使用watch是根据数据的具体结构,决定时候采用深度监测

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/195369.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

移动硬盘修复的有效方法,恢复移动硬盘的数据这么做!

硬盘是计算机中的存储设备&#xff0c;是非常重要的部分。当硬盘发生故障&#xff0c;很可能会导致我们电脑里面的数据丢失。所以移动硬盘发生故障&#xff0c;我们一定要想办法修复它。 有没有什么操作方法&#xff0c;我们自己也可以简单进行&#xff1f;移动硬盘修复其实也…

mariadb数据库删除恢复过程

不作不死&#xff0c;不小心使sqlyog导数据选错服务器。把生产机的数据全部删除了。可怕的数据没有做其他过多的备份&#xff0c;只是每天自动crontab 备份。该怎么办呢&#xff1f;头脑一片空白。快&#xff0c; 赶紧看看日备份有没有。马上切换到备份目录&#xff0c;喜出望外…

构建指标体系是一套数据分析的框架,比如看哪些指标,这些指标变化了就会反映什么问题,是这样的吗?

指标体系是指由若干个反映企业业务运营特征的相对独立又相互联系的统计指标所组成的有机整体。近年来&#xff0c;各类企业逐渐认识到业务指标的重要性&#xff0c;从管理者们长期关注的企业绩效考核&#xff0c;到用来体现信息化水平的数据可视化大屏&#xff0c;其背后都离不…

【IoT】寻光智能车与循迹智能车

1、寻光智能车 功能说明 智能寻光小车&#xff0c;智能识别光线强弱&#xff0c;实现小车永远向光最强的地方行走&#xff0c;到光源处小车自动停止。基本车体为三轮、二驱、双层机构。主控芯片采用最常用的51单片机&#xff1b; 驱动采用L9110驱动芯片驱动两个减速直流电机…

Veeam ONE v12 发布 (含下载) - 面向所有工作负载的 IT 监控解决方案

Veeam Availability Suite v12 请访问原文链接&#xff1a;https://sysin.org/blog/veeam-one-12/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;www.sysin.org 概述 保持全面可视性和控制力&#xff0c;以高效执行管理、优化、计划和…

域渗透漏洞

一、域内提权漏洞 (CVE-2021-42287和CVE-2021-42278) 1.1 漏洞介绍 1.1.1 CVE-2021-42278 主机账户的名称尾部应该有一个 $(即 sAMAccountName 属性)&#xff0c;但是域控对此属性并没有任何验证来确保是否带有 $&#xff0c;这允许攻击者模拟域控主机账户。 1.1.2 CVE-2021-42…

python带你制作自动答题程序,速度超越98%人

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 目录前言环境使用:模块使用:自动答题思路步骤:代码展示尾语 &#x1f49d;环境使用: Python 3.8 –> 解释器 <执行python代码> Pycharm –> 编辑器 <写python代码的> 模块使用: import requests —&g…

Springboot_vue摄影作品图片展示交流平台

前后端通讯一般都是采取标准的JSON格式来交互。 前后端分离 的核心思想是前端页面通过 ajax 调用后端的 restuful api 进行数据交互&#xff0c;而 单页面应用&#xff08;single page web application&#xff0c;SPA&#xff09;&#xff0c;就是只有一张页面&#xff0c;并在…

https解决方案-利用keytool生成证书

https解决方案 1:什么是HTTPS&#xff1f; HTTPS其实是有两部分组成&#xff1a;HTTP SSL / TLS&#xff0c; 也就是在HTTP上又加了一层处理加密信息的模块&#xff0c;并且会进行身份的验证。 2:什么是自签名证书&#xff1f; 就是自己生成的证书&#xff0c;并不是官方…

计算机中的大小端存储

在讲C语言的时候&#xff0c;有讲到大小端的内容&#xff0c;这里呢对大小端的相关内容进行了整理&#xff0c;有需要的可以参考一下&#xff01; 大端和小端来自一个小故事&#xff1a;端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的…

mysql导致索引失效的常见情况以及命名规范索引计划分析

1、失效的情况 1.前导模糊查询不能利用索引(like ‘%XX’或者like ‘%XX%’) 假如有这样一列code的值为’AAA’,‘AAB’,‘BAA’,‘BAB’ ,如果where code like %AB’条件&#xff0c;由于前面是 模糊的&#xff0c;所以不能利用索引的顺序&#xff0c;必须一个个去找&#xf…

虚拟机的Linux安装redis

1&#xff0c;下载redis 可以去官网下载压缩包 2&#xff0c;环境准备 我看很多文章都说要安装yum&#xff0c;但是在终端界面一直都是安装失败&#xff0c;后面才知道我的虚拟机是Ubuntu版本&#xff0c;而Ubuntu版本一般不使用yum命令&#xff0c;一般都是使用apt-get命令…

RANSAC: Random Sample Consensus

目录RANSAC算法基本思想和流程迭代次数推导参考RANSAC RANSAC(RAndom SAmple Consensus,随机采样一致)算法是从一组含有外点(outliers)的数据中正确估计数学模型参数的迭代算法。“外点”一般指的的数据中的噪声&#xff0c;比如说匹配中的误匹配和估计曲线中的离群点。所以&a…

电脑黑屏却开着机是怎么回事?解决黑屏的快捷方法

我们经常会用到电脑&#xff0c;但是你真的了解电脑相关知识吗&#xff1f;遇到比较复杂的电脑问题&#xff0c;你是否会手足无措&#xff1f;电脑黑屏却开着机这是什么原因造成的&#xff0c;我们有什么好办法恢复黑屏的电脑吗&#xff1f; 本文针对电脑黑屏却开着机的情况&a…

PCB生产工艺 | 第三道之沉铜,你都了解吗?

衔接上文&#xff0c;继续为朋友们分享普通单双面板的生产工艺流程。 如图&#xff0c;第三道主流程为沉铜。 沉铜的目的为&#xff1a; 在整个印制板&#xff08;尤其是孔壁&#xff09;上沉积一层薄铜&#xff0c;以便随后进行孔内电镀&#xff0c;使孔金属化&#xff08;孔…

小众点评项目要点内容总结【面试用】

小众点评项目要点 文章目录小众点评项目要点1.使用Redis代替Session登录1.1 Session登录存在的问题1.2 使用Redis代替Session登录分析1.3 使用Redis登录的流程1.4 解决Redis中有效期问题2.使用Redis作为缓存2.1 为什么使用缓存2.2 缓存策略2.3 解决缓存穿透2.4 解决缓存雪崩2.5…

CSS响应式设计——(视口/网格视图/媒体查询/图像/视频)看这一篇就够了

目录 响应式网页设计 - 简介 什么是响应式网页设计&#xff1f; 为所有用户获得最佳体验的设计 响应式网页设计 - 视口 什么是视口&#xff1f; 设置视口 把内容调整到视口的大小 响应式网页设计 - 网格视图 什么是网格视图&#xff1f; 构建响应式网格视图 实例 C…

【冷知识】如何快速获取自己的微信公众号关注页的链接地址?

一&#xff1a;业务场景 目前微信公众号的关注方法基本有三种: 扫描公众号二维码搜索公众号账号名称通过阅读公众号发布出来的公众图文,点击上面的微信号名称(右上角三点),可以查看公众号,进入关注页面。 但是如果想实现通过一个链接直接跳转到公众号的关注页面&#xff0c;…

VRP系统(视图介绍以及基本命令)

前言 VRP (Versatile Routing Platform)即通用路由平台&#xff0c;是华为在通信领域多年的研究经验结晶&#xff0c;是华为所有基于IP/ATM构架的数据通信产品操作系统平台。运行VRP操作系统的华为产品包括路由器、局域网交换机、ATM交换机、拨号访问服务器、IP电话网关、电信级…

【Hadoop】Hadoop 3.x 新特性总览

Hadoop 3.x 新特性剖析系列11. 概述2. 内容2.1 JDK2.2 EC技术2.3 YARN的时间线V.2服务2.3.1 伸缩性2.3.2 可用性2.3.3 架构体系2.4 优化Hadoop Shell脚本2.5 重构Hadoop Client Jar包2.6 支持等待容器和分布式调度2.7 支持多个NameNode节点2.8 默认的服务端口被修改2.9 支持文件…