首页 > 其他分享 >vue3 reactive对象的watch

vue3 reactive对象的watch

时间:2023-11-29 11:44:53浏览次数:39  
标签:stringify watch reactive JSON oldValue vue3 newValue

image
代码

<script setup>
import { ref,reactive, watch } from 'vue'

const obj = reactive({ count: 0 })
const yourKnow0 = ref('')
const yourKnow1 = ref('')
let cnt = 0

watch(obj, (newValue, oldValue) => {
  // 在嵌套的属性变更时触发
  // 注意:`newValue` 此处和 `oldValue` 是相等的
  // 因为它们是同一个对象!
yourKnow0.value = JSON.stringify(newValue)
yourKnow1.value =  JSON.stringify(oldValue)
console.log(cnt++,'=',JSON.stringify(newValue),JSON.stringify(oldValue))
})

obj.count++
</script>

<template>
  <p>
    Ask a yes/no question:
    <input v-model="obj.count" />
  </p>
  <p>{{ obj.count }}</p>
  <p>changed: {{ yourKnow0 }}</p>
  <p>changed: {{ yourKnow1 }}</p>
</template>

官方这么说:
image

Tips: 也就是说,oldValue没用!建议自己加个影子对象来对比前后更改
官方文档及其示例:

  1. https://cn.vuejs.org/api/reactivity-core.html#watch
  2. https://cn.vuejs.org/guide/essentials/watchers.html#deep-watchers

标签:stringify,watch,reactive,JSON,oldValue,vue3,newValue
From: https://www.cnblogs.com/yucloud/p/vue3_watch_reactive.html

相关文章

  • vue2和vue3项目并存时,下载nvm管理nodejs
    1、下载nvm  1)下载一个1.19版本以上的nvm,在执行“npminstall”时报错“npmERR!Unexpectedtoken'.'”。。https://blog.csdn.net/qq_25286361/article/details/1328999372)在nvm/setting.txt中,加入node_mirror:https://npm.taobao.org/mirrors/node/......
  • vue3结构赋值失去响应式引发的问题思考
    前言vue3是基于proxy实现响应式的能力,解决了vue2所遗留下来的一些问题,同时也正由于proxy的特性,也提高了运行时的性能凡事有利有弊,proxy虽然无敌,但是他也有本身的局限,从而产生一些认为的弊端原始值的响应式系统的实现导致必须将他包装为一个对象,通过.value的方式访......
  • Vue3 + Express 实现大文件分片上传、断点续传、秒传
    前言在日常开发中,文件上传是常见的操作之一。文件上传技术使得用户可以方便地将本地文件上传到Web服务器上,这在许多场景下都是必需的,比如网盘上传、头像上传等。但是当需要上传比较大的文件的时候,容易碰到以下问题:上传时间比较久;中间一旦出错就需要重新上传;一般服务端会对......
  • 【VUE基础】VUE3核心语法
    setupsetup是Vue3中一个新的配置项,值是一个函数,它是CompositionAPI“表演的舞台”,组件中所用到的:数据、方法、计算属性、监视......等等,均配置在setup中。特点如下:setup函数返回的对象中的内容,可直接在模板中使用。setup中访问this是undefined。setup函数会在beforeCreat......
  • Vite4+Typescript+Vue3+Pinia 从零搭建(4) - 代码规范
    项目代码同步至码云weiz-vue3-template要求代码规范,主要是为了提高多人协同和代码维护效率,结合到此项目,具体工作就是为项目配置eslint和prettier。editorconfig安装EditorConfigforVSCode插件,根目录下新建.editorconfig文件,增加以下配置[*.{js,jsx,ts,tsx,vue}]......
  • 记录后端不同请求方式的接口,使用vue3框架下的前端axio请求不同写法
    一.后端接口:@GetMapping("/index")publicResponseResultindex(){..} 前端接口:indexInfo().then(res=>{if(res.data.code==200){ElNotification({message:res.data.data.msg||"加载成功",ty......
  • 学习Vue3 第五章(Vue核心虚拟Dom和 diff 算法)
      介绍虚拟DOM虚拟DOM就是通过JS来生成一个AST节点树   为什么要有虚拟DOM?一个dom上面的属性是非常多的,所以直接操作DOM非常浪费性能介绍Diff算法diff算法的目的就是找出新旧不同虚拟DOM之间的差异,使最小化的更新视图,所以diff算法本质上就是......
  • 学习Vue3 第四章 vue指令
    指令v-开头都是vue的指令v-text用来显示文本v-html用来展示富文本v-if用来控制元素的显示隐藏(切换真假DOM)v-else-if表示v-if的“elseif块”。可以链式调用v-elsev-if条件收尾语句v-show用来控制元......
  • vue3 项目中出现的空白页面的总结(巨坑)
    一、背景开局先说一句!!!!好坑!!!!!,我遇到的空白页面的问题,不是路由懒加载的原因,是在点击路由完整的状态下,点击菜单跳转页面,出现的空白页面,不能触发页面中任何钩子函数,但是路由是跳了的,重新刷新页面,页面内容即可出现,而且空白出现率相当高。打开浏览器控制台和项目控制台都不报......
  • Vue3 第三章
    Vite目录public下面的不会被编译可以存放静态资源 assets下面可以存放可编译的静态资源 components下面用来存放我们的组件 App.vue是全局组件 maints全局的ts文件index......