首页 > 其他分享 >vue3的ref、reactive的使用

vue3的ref、reactive的使用

时间:2023-09-20 23:11:06浏览次数:45  
标签:定义 person 数据类型 value reactive vue3 ref

一、介绍

ref和reactive是Vue3中用来实现数据响应式的API,一般情况下,ref推荐定义基本数据类型,reactive推荐定义引用数据类型(对象或数组)

 

二、ref与reactive对比

<template>
  <p>{{ person.name }}</p>
  <p>{{ person.long }}</p>
  
  <p>{{ age }}</p>
  <p>{{ info.address }}</p>
  <span @click="changePerson">点击换人啦</span>
</template>

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


let person = reactive({
  name: 'Dog Ming',
  long: 18
});

let age = ref(18); // 基本数据类型

let info = ref({
  address: 'huizhou'
});


const changePerson = () => {
    person.name = 'Along';
    person.long = 10;
    
    age.value = 19;
    info.value.address = 'shenzhen';
}

</script>

比较内容

ref

reactive

是否响应式对象 JavaScript Proxy

能够创建的数据类型

任何类型

对象或数组

JS中是否需要.value 属性

html模板template中是否需要.value 属性

dom的更新

异步

异步

是否深层次响应

默认深层次

默认深层次

  • ref用于定义基本类型和引用类型,reactive仅用于定义引用类型。
  • reactive只能用于定义引用数据类型的原因在于内部是通过ES6的Proxy实现响应式的,而Proxy不适用于基本数据类型。
  • ref定义对象时,底层会通过reactive转换成具有深层次的响应式对象,所以ref本质上是reactive的再封装。
  • 在JS代码里使用ref定义的数据时,记得加.value后缀,但是在html中则不需要.value后缀;而reactive在JS或者html中都不需要.value后缀。
  • 在定义数组时,建议使用ref,从而可避免reactive定义时值修改导致的响应式丢失问题

 

标签:定义,person,数据类型,value,reactive,vue3,ref
From: https://www.cnblogs.com/Zzbj/p/17701757.html

相关文章

  • 从零开始学习Vue3路由,提升你的前端开发技能
    Vue3是当前最流行的前端框架之一,它提供了许多方便的功能和工具,其中路由(Router)就是其中之一。本文将介绍如何在Vue3中使用路由。安装和使用VueRouter首先,我们需要安装VueRouter。在终端中输入以下命令:npminstallvue-router@next--save接下来,我们需要创建一个路由实例。在......
  • Vue3引入滑块验证组件-2分钟搞定
    手把手视频地址:https://www.bilibili.com/video/BV1Nu4y1r7Wr/安装npminstall--savevue3-slide-verify登录页面引入template下<template><divclass="login"> <el-cardclass="cover"v-if="loginUser.data.user"> <slide......
  • Ant Design Vue 中的tab组件中,获取不到$ref
    问题:在tab的组件中引入了一个组件,在页面渲染时,需要用到子组件bpmnModeler里面的方法,调用this.$ref.bpm的时候报错了,找不到bpm<a-tab-panekey="3"tab="流程图"><divclass="search"><a-card><a-rowstyle="positi......
  • 我不知道的vue3
    代替Vue.delete  vue3中可以使用deleteobj.xxx 就可以实现去删除obj的xxx属性!!!    第二种:借助于del  import{del}from'vue'del(obj,propertyName) 也可删除属性!!!   每个vue页面因为scoped这个属性的原因,可以使得不同vue页面间的css......
  • HBase HFile与Prefix Compression内部实现全解--KeyValue格式
    1.引子 HFile(HBaseFile)是HBase使用的一种文件存储格式的抽象, 目前存在两种版本的HFile:HFileV1和HFileV2 HBase0.92之前的版本仅支持HFileV1,HBase0.92/0.94同时支持HFileV1和HFileV2。 以下分别是HFileV1/V2的结构图: HFileV1HFileV2(注:这两个图片在hbase......
  • Vue学习八:vue3
    一、vue3创建项目与介绍vue3创建项目与vue2使用vue-cli(基于webpack)脚手架不同,vue3使用create-vue(基于vite,更快)。创建项目的指令如下,首先看一下node的版本(node-v),16以上才支持。第一次创建项目会去下载create-vue比较慢,等一会就好了。npminitvue@latest然后关掉命令行,重新......
  • Vue3 watch揭秘:基本用法与原理深度解析
    Vue3中的watch函数用于监听数据的变化,当数据发生变化时,可以执行一些操作。watch函数的基本用法如下:import{ref,watch}from'vue';exportdefault{setup(){constcount=ref(0);watch(count,(newValue,oldValue)=>{console.log(`count的新值为:${......
  • Vue之与后端交互的三种方式、显示小电影案例、计算属性、监听属性、Vue生命周期、组件
    与后端交互的三种方式后端写了一堆接口前段会了前后端要打通===》从前端发送ajax===》核心:用js发送http请求,接收返回原生js,可以开启可以开启ajax,但是原生js开启,比较麻烦,需要做浏览器兼容,有坑(基本不写)jq,写了个兼容所有浏览器的$.ajax(),不仅仅有ajax,还封装了很多d......
  • 【C#】【Equals和ReferenceEquals】关于对象和值的问题
    在学习C#中的记录类型时,对出现的Equals和ReferenceEquals得到的不同结果表示不理解,随即进行相关资料查找。 值类型==:比较两者的“内容”是否相同,即“值”是否一样Equals:比较两者的“内容”是否相同,即“值”是否一样ReferenceEquals:返回false,因为会对值类型进行装箱再进行......
  • zone.js由入门到放弃之五——NgZone & ApplicationRef源码分析
    啸达同学刚写zone.js系列就说过,NgZone影响着Angular中的变更检测,历时一个多月的笔耕不辍,终于到了他初次下笔时的目的地~zone.js系列zone.js由入门到放弃之一——通过一场游戏认识zone.jszone.js由入门到放弃之二——zone.jsAPI大练兵zone.js由入门到放弃之三——zone.js源码分析......