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

一、Vue3组合式基础[ref、reactive]

一、ref

解释:ref是Vue3通过ES6Proxy实现的响应式数据,其与基本的js类型不同,其为响应式数据,值得注意的是,reactive可以算是ref的子集,ref一般用来处理js的基本数据类型如整型字符型等等(也可以用来处理对象、数组等等)

1.赋值

解释:对于ref赋值和取值的时候的格式都是xxx.value,但是在vue的模版语法中,无需带上 .value

// 赋值(基本数据类型)
const name = ref()
name.value = 55
const name = ref()
name.value = '555666'
// 赋值(对象)
const name = ref()
name.value = {time: 55
}
console.log(name.value.time)
// 赋值(数组)
const name = ref()
name.value = [{time: 556}
]
console.log(name.value[0].time)

2.取值

解释:这里主要解释,取值操作时,变量的一些变化

  1. 动态
    // 取值(将name里面的value赋值给b)
    const name = ref()
    name.value = [{time: 556}
    ]
    const b = { time: '' }
    b.time = name.value
    console.log(b)
    // 注意,此时的b已经不再完全是静态对象了,其刚刚被赋值的time对应是动态的Proxy
    
  2. 静态
    解释:通过for of循环和ES6的解构进行处理,此场景一般用于需要动态数据当中间变量时
    const name = ref()
    name.value = [{time: 556}
    ]
    const b = { time: '' }
    b.time = name.value[0].time
    console.log(b)
    // b取值时,要直接取到最里面的值就不会导致动态// 例子:
    const dataRef = ref()
    // res.data是格式为[]的Proxy
    dataRef.value = res.data
    console.log(dataRef)
    const b = { list: [] }
    // b.list = dataRef.value
    console.log(b)
    for (const i of dataRef.value) {// 解构代码const { goodsId, goodsName } = ib.list.push({ goodsId, goodsName })
    }
    console.log(b)
    // b此时就是常量
    

二、reactive

解释:reactive的底层是通过Proxy实现的响应式数据reactive的响应式是深层次的,reactive一般用来处理对象或者数组(基本数据类型是不允许的)

误区:看下面这些代码,如果在使用下面的代码进行操作(场景比如后端传来数据直接去赋值),其就会导致响应式丢失

let userInfo = reactive([{ name: 'time' }])
console.log(userInfo) // Proxy对象
// 类型场景:直接后端数据进行赋值
userInfo = [{ name: 'luck' }]
console.log(userInfo) // [{ name: 'luck' }] 其为普通数组响应性随之丢失

1.赋值

// 赋值(对象)
const name = reactive({ content: '' })
name.content = '5'
console.log(name)
console.log(name.value.time)
// 赋值(数组)
const name = reactive({ list: [] })
name.list = [5, 6, 7]
console.log(name)

2.取值

解释:这里就不再说动态的例子,其和ref里面讲的大同小异,主要演示一下静态取值,此场景一般用于需要动态数据当中间变量时

// 类型场景:后端发来的数据
const book = [{ id: 0, type: 'm' },{ id: 1, type: 'c' }
]
// 前端静态接收(此场景一般用于需要动态数据当中间变量时)
for (const i of book) {const { id, type } = iconsole.log(id, type)
}
http://www.lryc.cn/news/274033.html

相关文章:

  • unity网页远程手机游戏Inspector面板proxima
  • 聊聊spring事务12种场景,太坑了
  • mysql 数据查重与查重分页
  • 微服务(12)
  • ​iOS实时查看App运行日志
  • 【计算机毕业设计】SSM健身房管理系统
  • 嵌入式Linux之MX6ULL裸机开发学习笔记(IMX启动方式-启动设备的选择)
  • K8S Ingress-Nginx导出TCP端口
  • 索引类型-哈希索引
  • uniapp中组件库的Textarea 文本域的丰富使用方法
  • LLM、AGI、多模态AI 篇三:微调模型
  • IPC之十二:使用libdbus在D-Bus上异步发送/接收信号的实例
  • ES6之生成器(Generator)
  • Matlab技巧[绘画逻辑分析仪产生的数据]
  • Go面试题学习
  • SQL效率-查询条件需避免使用函数处理索引字段
  • 【Spring 篇】Spring:轻松驾驭 Java 世界的利器
  • 八个LOGO素材网站推荐分享
  • React格式化规范
  • 如何利用Conda管理多种虚拟环境与Jupyter Notebook内核切换
  • 博客摘录「 什么是QPS、TPS、吞吐量?- 高并发名词概念」2024年1月5日
  • PTA——逆序的三位数
  • ChatGPT怎么帮我上班的
  • WPF 漂亮长方体、正文体简单实现方法 Path实现长方体 正方体方案 WPF快速实现长方体、正方体的方法源代码
  • Nginx(十三) 配置文件详解 - 反向代理(超详细)
  • 谷歌浏览器启用实时字幕功能
  • php接口优化 使用curl_multi_init批量请求
  • 联邦拜占庭共识算法的工作流程
  • 国家开放大学形成性考核 统一考试 学习资料参考
  • 2401C++,实现文件服务器和聊天室