当前位置: 首页 > article >正文

Vue3.js - 计算属性监视属性

1. 计算属性

计算属性是基于响应式数据的值,且可以缓存。相比于复杂逻辑的模板或方法,计算属性简洁高效,当所依赖的的响应式数据发生变化时,计算属性会自动更新。计算属性必须与data中某个数据相关联,关联数据被修改时,计算数据此刻会被更新。

1.1 完整形式

实际上计算属性是一个类,在类中包含get与set两种方法,分别对计算属性进行读取与修改

其中函数进行调用时,会默认传入一个Vue对象,其中包含Vue中的data数据,所有当我们需要在计算属性内部使用dat数据时,需要在前面加上this.

<!DOCTYPE html>
<head>
    <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
</head>
<body>
    <div id="foot">
        <h2>{{number}}</h2>
        <h2>{{calculate}}</h2>
    </div>
</body>
<script>
    const app = Vue.createApp({
        data(){
            return{
                number:1,
            }
        },
        computed:{
            calculate:{
                get(){
                    return this.number
                },
                set(value){
                    this.number = this.number + value
                }
            }
        }
    })
    vm = app.mount('#foot')
</script>

1.2 简写形式

简写形式只用于只读状态,定义为一个函数形式,返回我们所需要的computed属性

            times10(){
                return this.number * 10
            }

2. 监视属性

监视属性(watchers) 是用于监控组件中某些数据的变化,并在变化时执行自定义操作的工具。它非常适合处理 异步操作(如 API 请求)或复杂的逻辑,例如响应式地更新其他数据或触发副作用。

实质上就是当某些数据发生变化后运行简述属性中的相关内容

2.1 简写形式

直接以函数的方式进行定义监视属性

        watch:{
            number(newvalue,oldvalue){
                console.log('This has been changed')
            }

number是我们data中存储的数据,通过函数的形式进行定义,传入newvalue以及oldvalue两个参数,当监视属性检测到对应数据被改改变后将会执行相应内容。

2.2 完整形式

完整形式的监视属性可以配置多种参数以此达到不同需求实现

通过回调函数handler,当 number 发生变化时,handler 会被调用,并接收新的和旧的值作为参数。

            id:{
                handler(newvalue){
                    console.log('hahahah')
                }
            }

2.2.1 深度监视

在Vue中数据内部如果是一个对象形式,普通的监视属性无法监视其内部的变化,Vue中的watch默认不监测对象内部值的改变。

此时我们需要针对于监视属性配置相应的选项:

            id:{
                handler(newvalue){
                    console.log('hahahah')
                },
                deep:true
            }

2.2.2 立即执行

想要在加载之后直接调用,我们需要配置我们的immediate属性

watch: {
    number: {
        handler(newValue) {
            console.log(`Initial value: ${newValue}`);
        },
        immediate: true  // 初始化时立即调用
    }
}

2.2.3 监视计算属性

对于所定义的计算属性我们也可实施监视,但计算属性所依赖的数据代理改变后,监视捕捉执行所对应的方法。

const app = Vue.createApp({
    data() {
        return {
            firstName: 'John',
            lastName: 'Doe'
        };
    },
    computed: {
        fullName() {
            return `${this.firstName} ${this.lastName}`;
        }
    },
    watch: {
        fullName(newVal) {
            console.log(`Full name changed to ${newVal}`);
        }
    }
});

app.mount('#app');


http://www.kler.cn/a/379205.html

相关文章:

  • 基于人脸识别PCA算法matlab实现及详细步骤讲解
  • 【每日一题】LeetCode - 三数之和
  • 动态规划应该如何学习?
  • 面试题:JVM(三)
  • 基于人工智能的搜索和推荐系统
  • 拆换LED灯珠后测量是短路的,为何
  • Linux运行Java程序,并按天输出日志
  • 数论——约数
  • 【Android】使用productFlavors构建多个变体
  • 鸿蒙进阶篇-Swiper组件的使用
  • docker镜像仓库实战
  • 2024年最新TikTok养号攻略来了!再也不用为流量头疼了!
  • 著名的 Tangible Software Solutions 代码转换软件推荐的 VB6 代码转换器 gmStudio
  • 【操作系统】基于环形队列的生产消费模型
  • 【含开题报告+文档+源码】基于Web的房地产销售网站的设计与实现
  • 嵌入式操作系统FreeRTOS
  • 柯桥日语培训|N1常考语法:~(よ)うが/(よ)うと——“无论……都……”
  • @Controller 和 @RestController 区别
  • 3.1 快速启动Flink集群
  • 速卖通商品详情API接口,json数据参考(案例)
  • npm入门教程3:npm安装
  • qt QTextEdit详解
  • 005-Kotlin界面开发之程序猿初试Composable
  • LongVU :Meta AI 的解锁长视频理解模型,利用自适应时空压缩技术彻底改变视频理解方式
  • vrrp和mstp,vrrp和byd
  • 无人机避障——使用三维PCD点云生成的2D栅格地图PGM做路径规划