vue3的ref、reactive、toRef、toRefs
用处:用于在setup中创建响应式变量
导出:import { ref, reactive, toRef, toRefs } from 'vue'
区别:
ref 用来定义基础数据类型,String, Number, Boolean, Symbol;通过 Object.defineProperty() 的get和set来实现响应式;js操作数据需要 .value,模版中读取不需要.value
reactive 用来定义对象或数组;通过 Proxy 来实现响应式,并通过 Reflect 操作源对象内部的数据;读写均不需要 .value
toRef 将 reactive 中的某个属性创建一个 ref 对象,const name = toRef(Person, 'name')
toRefs 将 reactive 中的所有属性创建成 ref 对象, ...toRefs(person)
例子:
<template>
<div class="demo">
<h2>姓名:{{ name }}</h2>
<h3>岗位:{{ job.type }}</h3>
<h3 v-show="job.age">年龄:{{ jbo.age }}</h3>
<button @click="updateInfo()">更新</button>
</div>
</template>
<script lang="ts">
import { defineComponent, ref, reactive } from 'vue'
export default defineComponent({
setup () {
let name = ref('张三');
let job:any = reactive({
type: 'web前端',
workAge: 16
})
function updateInfo() {
name.value = '李四'
job.type = 'Java'
delete job.workAge
job.age = 18
}
return {
name,
job,
updateInfo
}
}
})
</script>
toRef 和 toRefs
setup () {
let person = reactive({
name: '张三',
job: {
j1: { age: 18 }
}
})
return {
person,
name1: person.name, //解构后模版中直接使用name,但是属性不再具有响应性
name2: toRef(person, 'name'), //通过toRef来转换成ref对象
...toRefs(person), //批量转换成ref对象
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人