首页 > 其他分享 >vue中ref和reactive的区别

vue中ref和reactive的区别

时间:2023-07-30 14:33:48浏览次数:42  
标签:vue 响应 对象 数据类型 reactive ref 属性

在 Vue 3 中,`ref` 和 `reactive` 是两种不同的响应式数据处理函数,它们有以下区别:

1. **处理的数据类型**:
- `ref`:`ref` 函数用于处理基本数据类型,如数字、字符串、布尔值等。它可以将基本类型数据包装成一个响应式的引用,使其在模板中能够自动追踪变化。
- `reactive`:`reactive` 函数用于处理复杂对象,如对象(Object)、数组(Array)等。它可以将整个对象或数组转换为响应式的代理对象,使其内部的属性或元素也能在模板中自动追踪变化。

2. **获取数据的方式**:
- `ref`:通过访问 `.value` 属性来获取 `ref` 创建的响应式引用的实际值。例如:`const count = ref(0); console.log(count.value);`
- `reactive`:直接访问 `reactive` 创建的响应式代理对象的属性或元素即可。例如:`const person = reactive({ name: 'John', age: 30 }); console.log(person.name);`

3. **使用场景**:
- `ref`:适用于简单的基本数据类型,如数字、字符串、布尔值等。可以用于计数器、表单输入等场景。
- `reactive`:适用于复杂的对象或数组,用于管理状态、组件数据等较复杂的场景。

4. **变化追踪方式**:
- `ref`:`ref` 会对基本类型的值进行包装,使用了特殊的 getter 和 setter 来追踪变化,当值发生变化时,会触发组件的更新。
- `reactive`:`reactive` 通过 Proxy 来创建响应式代理对象,能够自动追踪对象或数组内部属性的变化,一旦属性值发生改变,会触发组件的更新。

在大多数情况下,`ref` 用于处理简单数据类型,而 `reactive` 用于处理复杂对象或数组。根据你的使用场景,选择适当的响应式数据处理函数可以更好地管理组件的状态和数据。

 

使用总结:响应式:ref需要用.value调用对象属性 reactive需要reactive包装对象直接.属性

标签:vue,响应,对象,数据类型,reactive,ref,属性
From: https://www.cnblogs.com/zzhsmallblog/p/17591401.html

相关文章

  • uniapp+vue3+ts 使用pinia报错
    "hasInjectionContext"isnotexportedby"node_modules/vue-demi/lib/index.mjs",importedby"node_modules/pinia/dist/pinia.mjs".11:36:19.397at../node_modules/pinia/dist/pinia.mjs:6:9解决方法:把pinia降级先删除pinianpmunipinia......
  • 使用vue制作一个聊天框
      使用Vue制作的简单聊天框:<template><divclass="chat-box"><divclass="message-list"><divclass="message"v-for="(message,index)inmessages":key="index"><div......
  • Your configuration specifies to merge with the ref
    目录Yourconfigurationspecifiestomergewiththeref1.执行gitpull命令时,错误提示:1.1场景:分支名称拼写错误1.1.1场景描述1.1.2产生原因1.1.3解决方案1.2场景:远程端同名分支已被删除1.2.1场景描述1.2.2产生原因1.2.3解决方案1.3场景:其它场景(排除场景1和场景2)1.3.......
  • vue2遇到的一些错误
    一、VUE中的VUEX如何调用modules里面的mutations和state ...mapMutations("workflow",['setApproverConfig','setApprover']),二、Non-nestedroutesmustincludealeadingslashcharacter.Fixthefollowingroutes:-JSExpression 出错点Non-nest......
  • Vue第一季
    001.Vue核心Vue简介初识1.1.Vue简介1.1.1.官网●英文官网●中文官网1.1.2.介绍与描述●Vue是一套用来动态构建用户界面的渐进式JavaScript框架○构建用户界面:把数据通过某种办法变成用户界面○渐进式:Vue可以自底向上逐层的应用,简单应用只需要一个轻量小巧的核心......
  • 你不知道的 HTTP Referer
    前言上周突然发现自己的自己站点的图片全都403了,之前还是好好的,图片咋就全都访问不了呢?由于我每次发文章都是先发了掘金,然后再从掘金拷贝到我自己的站点,这样我就不用在自己的站点去上传图片了,非常方便。啥也没干,图片咋就403了呢?估计又是整了什么开源节流,降本增效吧,说白了就是大家都......
  • Vue3 Vite electron 开发桌面程序
    Electron是一个跨平台的桌面应用程序开发框架,它允许开发人员使用Web技术(如HTML、CSS和JavaScript)构建桌面应用程序,这些应用程序可以在Windows、macOS和Linux等操作系统上运行。Electron的核心是Chromium浏览器内核和Node.js运行时环境。Chromium内核提供了现代浏览器的功能,例如HTML......
  • Vue3.3 编译宏
    Vue3.3新增了一些语法糖和宏,包括泛型组件、defineSlots、defineEmits、defineOptionsdefineProps父子组件传参<template><div><Childname="xiaoman"></Child></div></template><scriptlang='ts'setup>importChildf......
  • Vue3 如何开发移动端(安卓,ios)
    Vue3有没有一款好用的开发移动端的工具1.uniapp我个人认为uniapp适合开发小程序之类的,用这个去开发原生应用会存在一些问题性能限制:由于Uniapp是通过中间层实现跨平台,应用在访问底层功能时可能存在性能损失。与原生开发相比,Uniapp在处理大规模数据、复杂动画和高性能要求的应......
  • System.NullReferenceException:“未将对象引用设置到对象的实例。”
     c#中操作的变量都是对象对象则有属性和方法   未将对象引用  设置到  对象的实例就是对实例进行操作属性和方法时出错,也就是说该对象没有这个属性或者方法另外当操作的对象为空时,也会出现该错误。我这里就是操作的对象为空出错。因为我没用写入该字段。......