当前位置: 首页 > news >正文

Vue3中ref、reactive、toRef、toRefs基本用法和区别

ref、reactive

setup 函数中默认定义的变量并不是响应式的(即数据变了以后页面不会跟着变),如果想让变量变为响应式的变量,需要使用 ref 和 reactive 函数修饰变量。

区别:

  • reactive只能传入对象类型的参数,所以基本数据类型添加响应式状态只能用ref(当然ref也可以定义复杂的数据)

  • ref 获取数据值需要加.value

注:ref底层使用的是proxy代理函数实现双向绑定,proxy 函数必须要接收一个对象,如果想修改 name 的值,需要使用 name.value

toRef、toRefs

区别:

toRef:只希望转换一个reactive对象中的属性为ref,获取数据值需要加.value

toRefs:可以将reactive返回的对象中的属性都转成ref

注:toRefs 使用ES6的解构语法,因为一个响应式对象直接结构时,结构后的数据不再具有响应式,Vue为我们提供了一个toRefs的函数,可以将reactive返回的对象中的属性都转成ref;

toRef: toRef接收两个参数target和attr,target是一般是reactive的响应式对象,attr是对象的属性,返回响应式变量(采用引用的方式,修改响应式数据,会影响原始数据,并且数据发生改变)

import {reactive,toRef} from 'vue'
setup(){const obj = reactive({ name: "姜无忧", age: "18" })const name = toRef(obj, "name") return {name }
}

toRefs: 将响应式reactive对象转换为普通对象,多用于响应式对象转为普通对象后解构(对象中的数据依旧是响应式)

import {reactive,toRefs} from 'vue'
setup(){const obj = reactive({ name: "姜无忧", age: "18" })const {name,age} = toRefs(obj) return {name,age }
}//或者
import {reactive,toRefs} from 'vue'
setup(){const obj = reactive({ name: "姜无忧", age: "18" })return {...toRefs(obj)}
}

http://www.lryc.cn/news/24690.html

相关文章:

  • python hash 不一致踩坑总结
  • qt5.15 快速安装 国内源
  • JavaScript 对象
  • 数据库设计三大范式
  • cesium学习记录02-vue项目中cesium的配置与使用
  • 【微服务】-认识微服务
  • 容器的线程安全性
  • 如何用Postman测试整套接口?测试流程是什么?
  • 【批处理脚本】-2.1-测试IP连接命令ping
  • 百度“文心一言”携手酷开科技,实现AI智能领域新突破!
  • Elasticsearch索引全生命周期管理一网打尽
  • MySQL的SELECT
  • conda 搭建tensorflow-GPU和pycharm以及VS2022 软件环境配置
  • HACKTHEBOX——Teacher
  • 干货| Vue小程序开发技术原理
  • unity-web端h5记录
  • 基于部标JT808的车载视频监控需求与EasyCVR视频融合平台解决方案设计
  • Grafana邮件及告警配置
  • Springboot Java多线程操作本地文件,加读写锁,阻塞的线程等待运行中的线程执行完再查询并写入
  • WebRTC拥塞控制算法——GCC介绍
  • 大数据技术之Maxwell基础知识
  • 元数据管理实践数据血缘
  • SQL的优化【面试工作】
  • Kotlin 40. Dependency Injection 依赖注入以及Hilt在Kotlin中的使用,系列3:Hilt 注释介绍及使用案例
  • 1000亿数据、30W级qps如何架构?来一个天花板案例
  • 人工智能及其应用(蔡自兴)期末复习
  • openpnp - configure - 矫正里程碑
  • JavaScript高级程序设计读书分享之8章——8.2创建对象
  • 关于Could not build wheels for opencv-python-headless, which is...报错的解决方案
  • 【K3s】第1篇 K3s入门级介绍及架构详解