首页 > 其他分享 >Vue全流程--Vue2计算属性与监视属性

Vue全流程--Vue2计算属性与监视属性

时间:2025-01-20 17:27:55浏览次数:3  
标签:computed Vue 函数 watch Vue2 监视 属性

计算属性理论

计算属性:

1、定义:所需属性不存在,可以通过其他已有属性计算得出

2、原理:以Object.defineproperty()方法提供的get和set函数

3、get函数执行条件:被数据被读取时,或者所依赖数据发生改变时,get就会被调用。

      set函数执行条件:数据被修改时,令返回值===修改值

4、优势:与methods相比,内部有缓存机制,效率高调试方便

计算属性实操

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 开发环境版本,包含了有帮助的命令行警告 -->
    <script type="text/javascript" src="vue.js"></script>
</head>
<body>
   <br>
    <div class="biaoqian">
        姓:<input type="text" v-model="firstName"><br><br>
        名:<input type="text" v-model="firstName"><br><br>
        全名:<span>{
  
  {fullname}}</span>
    </div>
    <script type="text/javascript">
        Vue.config.productionTip = false 
        const app =new Vue({
        el:".biaoqian",
        data:{
            firstName:"小",
            LastName:"王",
            url : 'https://space.bilibili.com/1347961416?spm_id_from=333.788.0.0'
        },
       computed:{
        fullname:{
            //当fullname初次被读取时,或者所依赖数据发生改变时,get就会被调用,且返回值作为fullname的值
            get(){
                return  this.firstname+"-"+this.LastName;
            },
            //当fullname数据被修改时,令返回值===修改值
            set(value){
                const arry = value.split('-');
                this.firstName=arry[0];
                this.LastName=arry[1];
            }
        }
       }
        })
    </script>
</body>
</html>

通过上面实例可以发现无论修改哪一个数据,其他数据都会做出相应改变。这就是利用了

computed:{}。

监视属性理论

定义:用于监视某种属性的属性值

方法:监视属性watch:

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

2、监视的属性必须存在,才可以被监视

3、监视的两种写法

   1)在创建的app实例中传入watch:{} 配置

   2)通过app.$watch配置

监视属性实操

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 开发环境版本,包含了有帮助的命令行警告 -->
    <script type="text/javascript" src="vue.js"></script>
</head>
<body>
   <br>
    <div class="biaoqian">
       <h1>今天温度{
  
  {info}}</h1>
       <button @click="chagetemperature">切换温度</button>
    </div>
    <script type="text/javascript">
        Vue.config.productionTip = false 
        const app =new Vue({
        el:".biaoqian",
        data:{
            ishigh:true
        },

        computed:{
        //当不需要set函数,即计算属性不会被用户修改时,可以简写成以下形式
        info(){
            return this.ishigh ? '高' : '低'
              }
        },

        methods:{
            chagetemperature(){
                this.ishigh = !this.ishigh//令data中的true改为false
            }
        },

        watch:{
            ishigh:{
                //当isHigh发生改变时,hander就会被调用
                handler(newValue,oldValue){
                    console.log("xiugail",newValue,oldValue)
                }
                // //初始化时让handler调用一下
                // immediate:true    
            }
            //简写(写成函数的形式)
            // ishigh(newValue,oldValue){
            //         console.log("xiugail",newValue,oldValue)
            //     }
        }


        })
    </script>
</body>
</html>

运行结果

通过watch可以及时的反馈温度的高低变化 

计算属性与监控属性的区别

computed和watch之间的区别:

1.computed能完成的功能,watch都可以完成。

2.watch能完成的功能,computed不一定能完成,例如:watch可以进行异步操作。

两个原则:

1.所被Vue管理的函数,最好写成普通函数这种形式"(){}',这样this的指向才是vm 或 组件实例对象。

  2.所有不被Vue所管理的函数(定时器的回调函数、ajax的回调函数等、Promise的回调函数),最好写成箭头函数这种形式()=>{},这样this的指向才是vm 或 组件实例对象。

总结

本章学习了计算属性和监视属性。这两种不同的方法都有起作用,在后面的项目学习中我们对其理解会加深。这两种属性都有简写方式。(在代码中有提到),后面的文章可能会以简写的方式进行书写。

标签:computed,Vue,函数,watch,Vue2,监视,属性
From: https://blog.csdn.net/2301_77136716/article/details/145246887

相关文章

  • JAVA开源毕业设计 在线课程管理系统 Vue.JS+SpringBoot+MySQL
    本文项目编号T137,文末自助获取源码\color{red}{T137,文末自助获取源码}......
  • 基于springboot+vue的推荐算法的智能快递分拣系统(源码+文档+部署讲解等)
    课题简介该系统旨在利用SpringBoot和Vue技术,结合推荐算法,构建一个智能快递分拣系统,以提高快递分拣的效率和准确性。通过对快递信息(如重量、尺寸、目的地、发货地等)的分析,将包裹分配到最适合的分拣路径和目的地,实现自动化和智能化的分拣操作。二、系统功能模块快递......
  • 基于springboot+vue的推荐算法的校园电子图书听书系统的设计与实现(源码+文档+部署讲
    课题简介一、系统概述本系统旨在为校园用户提供一个电子图书听书平台,结合SpringBoot和Vue的技术优势,并融入推荐算法,提升用户的听书体验。它将满足学生和教师在学习、休闲等方面的听书需求,同时提供个性化的推荐服务。二、系统功能模块图书资源管理模块:存储和管理......
  • 举例说明css有哪些简写的属性和属性值?
    CSS(层叠样式表)中包含了大量的属性和属性值,用于定义HTML元素的样式。为了简化代码和提高效率,CSS提供了一些简写的属性和属性值。以下是一些常见的CSS简写属性和属性值的例子:1.颜色值缩写16进制颜色:CSS中常用的颜色表示方法是16进制,可以缩写为3位或6位。例如,#000000可以缩写为#0......
  • html的a标签属性rel="noopener"有什么作用?
    在HTML中,<a>标签的rel属性用于定义当前文档与被链接文档之间的关系。rel="noopener"是其中的一个值,它主要的作用是在打开新窗口或新标签页时,防止新页面通过window.opener属性访问到原页面的window对象。这可以提高网站的安全性,防止一些潜在的跨站脚本攻击(XSS)或反向Tabnabb......
  • vue3.5保证你看得明明白白
    子组件中设置默认属性<template><divclass="child-page"><h1>我是子组件</h1><h3>{{total}}</h3><h3>{{userInfo}}</h3></div></template><scriptsetup>//在<scriptsetup......
  • Vue2_了解核心概念和一个示例工程
    Vue2_了解核心概念和一个示例工程写文的目的是为了梳理知识,正如某一位面试官所说:会写并不牛,懂原理才牛下面开始:vue具有较好的可维护性和可测试性vue是一个渐进式框架(请忽略我这灵魂画手......
  • vue中 通过 params 传递对象参数
    vue中通过params传递对象参数在Vue中,通过路由的params传递参数是一种常见的需求,尤其是在使用VueRouter时。params是一种动态路由参数,通常用于传递路径中的变量,例如/user/:id。然而,params本身并不支持直接传递对象类型的数据。如果需要传递对象参数,可以通过以下几种......
  • 基于SpringBoot+Vue的智慧党建平台设计与实现
    ......
  • 【CAS】CAS 多属性返回(五)
    原理在 CAS5.3.2 中,登录成功后返回用户的多个属性内容是通过 Principal 对象实现的。Principal 包含了用户的基本信息(如用户名)以及额外的属性(如邮箱、电话、角色等)。具体逻辑其实还是在 AuthenticationHandler 处理的,AuthenticationHandler原理参考(【CAS】CAS......