首页 > 其他分享 >Vue3中ref和reactive的对比

Vue3中ref和reactive的对比

时间:2023-04-26 23:23:28浏览次数:45  
标签:响应 对象 浅层 reactive API Vue3 ref

 

先说ref()和reactive()

Vue3这两个API作用是相似的,只不过ref()是针对变量的响应式包装,而reactive()是针对对象的响应式包装。

 

ref()和reactive()对比

API 说明 目标
ref() 传入一个值,返回一个响应式的变量 变量
reactive()

返回一个对象的响应式代理。

通过Proxy包裹,因此,返回的对象不等于源对象。

对象

 

 

 

 

 

ref()和shallowRef()对比

API 说明 深度
ref()

如果将一个对象赋值给ref,那么这个对象将通过reactive()转为具有深层次响应式的对象。

如果该对象中包含了嵌套的ref,它们将被深层地解包。

深层
shallowRef()

ref()的浅层作用形式。可以避免以上那种深层次的转换

浅层

 

 

 

 

 

reactive()和shallowReactive()对比

API 说明 深度
reactive() 一个响应式对象也将深层地解包任何ref属性,同时保持响应性。(响应式数组和Map这样的原生集合类型中的ref元素除外) 深层
shallowReactive()

reactive()的浅层作用形式。

没有深层级的转换:一个浅层响应式对象里只有根级别的属性是响应式的,属性的值会被原样存储和暴露。

这也意味着值为ref的属性不会被自动解包。

浅层

 

 

 

 

标签:响应,对象,浅层,reactive,API,Vue3,ref
From: https://www.cnblogs.com/cathy1024/p/17357707.html

相关文章

  • Vue3 Hooks 的基础用法
    前言Vue3在API设计上引入了类似于ReactHooks的CompositionAPI,可以更方便地实现逻辑的复用和组合。本文将介绍Vue3Hooks的基础用法。基本使用Vue3Hooks中最简单的Hook就是setup。它是一个在组件创建时执行的函数,可以访问组件实例中的属性和方法,同时可以返回一......
  • vue3 uniapp Uncaught (in promise) TypeError: Cannot read properties of null (rea
    引发这个问题是在三级页面中使用uni.navigateBack({delta:2})返回到一级页面再重一级页面进入二级页面二级页面中引用的组件引发的emitsOptions报错//原因:我在二级页面中的组件使用ts的emit写法引发的报错constemit=defineEmits<{(e:'confirm',contents:string):......
  • vue3中useRouter和useRoute的使用
    vue3路由新玩法useRoute和useRouter详解原文链接原来的vue2路由是通过this.$route和this.$router来控制的。现在vue3有所变化,useRoute相当于以前的this.$route,而useRouter相当于this.$router一、useRouter手动控制路由变化import{useRouter}from'vue-router'exportdef......
  • Vue3 + element-plus使用注意
    1.给组件设置ref="xxx"例如:<el-tableref="tableRef"定义tableRef时,需要注意尽量使用ref()而非ref(null)consttableRef=ref();因为使用ref(null)会得不到$el的相关属性,即undefined例如:表格自适应高度consttableRef=ref();constsetTableHeight=()=>......
  • vue3+vite自适应PC端
    1、下载包pnpmaddlib-flexible-computerpostcss-px2rempx2rem-loader-D2、在main.ts里引入import"lib-flexible-computer";3、在vite.config.ts写入importpx2remfrom"postcss-px2rem"css:{postcss:{plugins:[px2rem({......
  • Vue3中slot插槽使用方式
    **********************************Vue3中slot插槽使用方式****************************************************参考:https://huaweicloud.csdn.net/638eab83dacf622b8df8d08c.html<templatev-slot:isFang></template>简写v-slot:isFang#isFang<template#isFan......
  • 仿Django框架-基于wsgiref模块和jinja2模块写一个简单的框架 主流框架简介 动静态网
    目录仿Django框架-基于wsgiref模块和jinja2模块写一个简单的框架一、前期需要的了解背景知识web框架的本质理解1:连接前端与数据库的中间介质理解2:socket服务端手写web框架的大概思路1.编写socket服务端代码2.浏览器访问响应无效>>>:HTTP协议3.根据网址后缀的不同获......
  • Vue3---error xx should be on a new line
    ESLint:':render-header'shouldbeonanewline.(vue/max-attributes-per-line)此问题是由于.eslintrc.js文件中的vue/max-attributes-per-line配置错误产生的"vue/max-attributes-per-line":['error',{"singleline":10,......
  • vite + vue3 + vue-router4 + ts + element plus + pinia + axios构建项目
    最后是完整的vite.config.ts、main.ts配置1、先用vite创建一个项目npmcreatevite@latest2、安装elementplusyarnaddelement-plus@element-plus/icons-vuevite.config.ts配置组件按需导入,图标自动导入npminstall-Dunplugin-vue-componentsunplugin-auto-impor......
  • vue3 拖拽操作学习
    AS-Editor组件git:https://gitee.com/was666/as-editor/tree/vue3.x/体验:http://was666.gitee.io/as-editor/#/home......