首页 > 其他分享 >VUE框架Vue3下使用watch监听reactive下的数据变化并使深度监视起效------VUE框架

VUE框架Vue3下使用watch监听reactive下的数据变化并使深度监视起效------VUE框架

时间:2024-01-01 23:01:31浏览次数:27  
标签:VUE console 框架 true watch oldValue Vue3 data newValue

<template>
    <h1>{{ data.counter }}</h1>
    <button @click="data.counter++">按一下加一</button>
    <h1>{{ data.a.b.c.d.counter1 }}</h1>
    <button @click="data.a.b.c.d.counter1++">按一下加一</button>
</template>
 
<script>
import { reactive,watch } from 'vue'
export default {
    name : "App",
    setup(){
        let data = reactive({
            counter : 1,
            a : {
                b : {
                    c : {
                        d: {
                            counter1 : 100
                        }
                    }
                }
            }
        });
        // 对于reactive监视的属性来说,默认就是开启深度监视的
        // 如果需要针对对象的某属性,那就只指定这个属性即可
        watch(data,(newValue,oldValue) => {
            // 对于reactive来说,新的可以获取,老的获取不了
            console.log("我是新的"+newValue+"我是旧的"+oldValue);
            // newValue可以获取,但是old获取不了
        },{immediate:true});
 
        // 如果我们只需要侦听一个属性,我们就写一个函数,只侦听那一个属性即可
        // 因为我们最后获取的是一个基本数据类型的值,所以不能直接指向它,必须是以函数的形式返回
        // 除非那个是一个响应式的对象
        watch(()=>{return data.counter},(newValue,oldValue) => {
            console.log("我是新的"+newValue+"我是旧的"+oldValue);
        },{immediate:true});
        watch(()=>data.a.b.c.d.counter1,(newValue,oldValue)=>{
            console.log("我是新的"+newValue+"我是旧的"+oldValue);
        },{immediate:true});
        // 监听数组的方式
        watch([()=>data.counter,()=>data.a.b.c.d.counter1],(newValue,oldValue)=>{
            console.log("我是新的"+newValue+"我是旧的"+oldValue);
        },{immediate:true});
        // 这个还是oldValue获取不了,但是可以使用深度监视效果了
        watch(()=>data.a.b,(newValue,oldValue)=>{
            console.log("我是新的"+newValue+"我是旧的"+oldValue+"哈哈哈哈");
        },{immediate:true,deep:true});
        return {data};
    } 
}
</script>
 
<style>
 
</style>
import mitt from 'mitt';
// 这个会创建一个对象emitter
// 把它当作全局事件总线对象即可
export default mitt();

标签:VUE,console,框架,true,watch,oldValue,Vue3,data,newValue
From: https://blog.51cto.com/u_16322355/9058656

相关文章

  • 00-开篇导读:学习分库分表开源框架的正确方法
    1前言长期从事分布式系统的构建和优化工作,负责过大型电商以及物联网系统的设计和开发,曾带领团队完成业界领先的物联网数据平台建设工作,对基于ShardingSphere进行数据分库分表和治理工作有着丰富的实践经验。互联网高速发展带来海量的信息化数据,也带来更多的技术挑战。以我工作多......
  • 在Python中,部署API接口通常涉及使用一个Web框架,将你的Python代码转换为可以通过HTTP请
    使用Gunicorn运行Flask应用相对简单。首先,确保已经安装了Gunicorn和Flask(如果还没有安装的话)。步骤:步骤1:安装Gunicornpipinstallgunicorn步骤2:准备你的Flask应用确保你的Flask应用(比如 app.py 文件)已经创建并且可以通过Flask的开发服务器运行。步骤3:使......
  • 将Python脚本打包成API通常可以使用一些框架和工具来简化这个过程。以下是一种使用Fla
    将Python脚本打包成API通常可以使用一些框架和工具来简化这个过程。以下是一种使用Flask框架创建简单API的方法:安装Flask:如果你还没有安装Flask,可以使用以下命令安装:pipinstallflask创建Flask应用:创建一个Python脚本,例如app.py,并使用以下代码创建一个简单的Flask应用:fromflas......
  • 基于SSM框架的开放式教学评价管理系统
    背景及意义系统管理也都将通过计算机进行整体智能化操作,对于开放式教学评价管理系统所牵扯的管理及数据保存都是非常多的,例如个人中心、教师管理、学生管理、游客管理、评价信息管理、综合评价管理,这给管理者的工作带来了巨大的挑战,面对大量的信息,传统的居民方面的信息管理,都是通......
  • vue 2实战系列 —— 复习Vue
    复习Vue近期需要接手vue2的项目,许久未写,语法有些陌生。本篇将较全面复习vue2。Tip:项目是基于ant-design-vue-proant-design-vue-pro由于cms是基于这个项目开发的,所以笔者就将其下载下来。下载后运行//按照依赖yarninstall//本地启动yarnrunserve根据提......
  • 国产深度学习框架吸引用户的一种免费手段——免费GPU时长
    国产的深度学习框架基本成为了一个头部公司的标配了,不论是阿里、百度还是华为都推出了自己的深度学习框架,这几家公司为了吸引用户也都采取了免费使用GPU的活动,但是与阿里、百度的不同,华为是与固定的高校的实验室合作,为合作的大学实验室提供免费算力,并且这个算力的使用时限目前应该......
  • johnny-five 开发框架
    johnny-five是一个支持机器人以及IOT编程的开发框架,基于nodejs,核心是支持对于arduino兼容的设备,但是对于其他非arduino的设备可以通过IOPlugins解决说明对于想使用nodejs开发arduino硬件的同学来说是一个不错的选择,同时还有一些相关的参考书可以学习参考资料https://gith......
  • 部署springboot前后端分离框架
    springboot前后端分离的文件长这样 1.是后端代码2.是前端代码3.是数据库省去了语句参照了一下几个博主的文章部署成功:超详细部署后端:https://blog.csdn.net/weixin_45393094/article/details/123674367运行时遇到报错信息:https://blog.csdn.net/qq_44802992/article/detai......
  • 【电影推荐系统】Spring Boot + Vue3 前后端分离项目
    目录0前言1项目前端介绍1.1项目启动和编译1.1.1项目启动1.1.2项目编译1.2前端技术栈1.3功能模块前端界面展示1.3.1基础功能模块1.3.2用户模块1.3.3特色功能展示1.3.4界面自适应实现2项目后端介绍2.1项目打包部署2.1.1项目打包2.1.2项目部署2.2后端功能实现3数据......
  • vue3的ref、reactive、toRef、toRefs
    用处:用于在setup中创建响应式变量导出:import{ref,reactive,toRef,toRefs}from'vue'区别:ref用来定义基础数据类型,String,Number,Boolean,Symbol;通过Object.defineProperty()的get和set来实现响应式;js操作数据需要.value,模版中读取不需要.valuereactive用来定义......