Vue3中ref和reactive的区别

前言

Vue3中实现数据响应式,用到的是组合式API中的ref和reactive函数,不同的是ref函数一般定义基本类型数据,而reactive函数用于定义一个对象类型的响应式数据。


1、两者的区别

  1. ref和reactive区别:
    如果在template里使用的是ref类型的数据, 那么Vue会自动帮我们添加.value
    如果在template里使用的是reactive类型的数据, 那么Vue不会自动帮我们添加.value

  2. Vue是如何决定是否需要自动添加.value的
    Vue在解析数据之前, 会自动判断这个数据是否是ref类型的,
    如果是就自动添加.value, 如果不是就不自动添加.value

  3. Vue是如何判断当前的数据是否是ref类型的
    通过当前数据的__v_ref来判断的
    如果有这个私有的属性, 并且取值为true, 那么就代表是一个ref类型的数据

2、ref

ref即可以定义基本类型、也可以定义对象类型。
template中取值时,会自动添加.value

<template>
<div @click="changeData ">{
   {
   msg}}</div>
</template>
<script setup>
import {
    ref,reactive } from "vue";
let msg = ref('hello world')
let obj = ref({
   
    name:'juejin',
    age:3
})
const changeData = () => {
   
  msg.value = 'hello juejin'
  obj.value.name = 'hello world'
}
</script>


3、reactive

reactive只能定义对象类型。定义基本数据类型不起作用
取值时不需要加.value

<template>
<div @click="changeData ">{
   {
   obj.name}}</div>
</template>
<script setup>
import {
    reactive } from "vue";
let obj = reactive({
   
    name:'juejin',
    age:3
})
const changeData = () => {
   
  obj.name = 'hello world'
}
</script>


4、使用ref定义基本类型数据,reactive定义对象类型数据原因

ref定义对象,在js中使用时都应该.value,如果定义的对象嵌套太深,再多一层.value太冗余,而reactive则无需.value;
ref定义对象类型数据,里边使用的也是reactive中的Proxy代理,不如直接使用reactive;
reactive不能直接定义基本类型数据,不起作用,可以将基本类型数据整体放入一个对象中,将reactive当作Vue2中的data去使用。

相关推荐

  1. Vue3refreactive区别

    2023-12-16 07:44:05       38 阅读
  2. Vue3 refreactive区别是什么?

    2023-12-16 07:44:05       34 阅读
  3. vue3reactiveref

    2023-12-16 07:44:05       8 阅读
  4. vue3reactiveref

    2023-12-16 07:44:05       9 阅读
  5. vue3 ref reactive 区别

    2023-12-16 07:44:05       20 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-16 07:44:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-16 07:44:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-16 07:44:05       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-16 07:44:05       20 阅读

热门阅读

  1. 跨站点分布式多活存储建设方案概述

    2023-12-16 07:44:05       35 阅读
  2. vue3的使用和知识点

    2023-12-16 07:44:05       39 阅读
  3. SpringMVC-servlet交互

    2023-12-16 07:44:05       35 阅读
  4. ArcGIS Pro SDK根据Xml/Json文件反向生成几何

    2023-12-16 07:44:05       50 阅读
  5. 常见ORM 框架

    2023-12-16 07:44:05       39 阅读
  6. 挑战52天学小猪佩奇笔记--day23

    2023-12-16 07:44:05       32 阅读
  7. 轻松入门:Python 中的 Scipy 库初探

    2023-12-16 07:44:05       32 阅读
  8. 23.12.15 《CLR via C#》 笔记8

    2023-12-16 07:44:05       40 阅读
  9. python在车载电子测试方面的应用笔记【1】

    2023-12-16 07:44:05       44 阅读
  10. springboot rabbitmq 发布订阅 广播模式

    2023-12-16 07:44:05       45 阅读
  11. k8s1.24+prometheus+grafana容器监控与告警

    2023-12-16 07:44:05       25 阅读
  12. 2-go-变量定义、类型、常量、函数

    2023-12-16 07:44:05       41 阅读