vue3的ref、reactive的使用
一、介绍
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中是否需要 |
是 |
否 |
html模板template中是否需要 |
否 |
否 |
dom的更新 |
异步 |
异步 |
是否深层次响应 |
默认深层次 |
默认深层次 |
- ref用于定义基本类型和引用类型,reactive仅用于定义引用类型。
- reactive只能用于定义引用数据类型的原因在于内部是通过ES6的Proxy实现响应式的,而Proxy不适用于基本数据类型。
- ref定义对象时,底层会通过reactive转换成具有深层次的响应式对象,所以ref本质上是reactive的再封装。
- 在JS代码里使用ref定义的数据时,记得加.value后缀,但是在html中则不需要.value后缀;而reactive在JS或者html中都不需要.value后缀。
- 在定义数组时,建议使用ref,从而可避免reactive定义时值修改导致的响应式丢失问题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix