vue3笔记5 响应式API
浅响应式
shallowReactive 只创建第一层数据的响应式
适用于对象结构深,但只需处理最外层属性变化的场景
shallowRef 不处理对象类型的响应式,传对象时不会自动调用reactive
适用于逻辑中不修改对象属性,而替换整个对象的场景
只读
readonly 把响应式数据(ref/reactive)包装为只读的响应式数据
shallowReadonly 浅只读
适用于不希望数据被修改的场景,例如传递响应式数据时,不希望其他组件修改数据
将响应式对象转换为普通对象
toRaw 将reactive对象转换为普通对象
适用于读取响应式对象的数据进行操作,而不希望引起页面更新
markRaw 将普通对象标记为原始数据,防止被转换为响应式数据
适用于防止第三方类库被设置为响应式,或提高渲染不可变的大数据列表性能debounce
自定义ref
可以自行控制建立依赖跟踪和触发更新通知
例如以下防抖函数实现,更新ref值后延迟一定时间才真正更新引用的值,并触发界面更新
<template>
<input v-model="text" />
</template>
<script>
setup() {
function useDebouncedRef(value, delay = 200) {
let timeout
return customRef((track, trigger) => {
return {
// 从自定义ref中取数了,调用track()触发依赖跟踪,并把value返回
get() {
// 取数时,通知取数方跟踪此数据变化,建立依赖关系
// 不写这个,取数方无法将此ref关联为依赖对象,不会在value更新时重新读取数据处理
track()
return value
},
// 向自定义ref设置值,更新value值,并调用更新提醒触发器trigger
set(newValue) {
clearTimeout(timeout)
timeout = setTimeout(() => {
value = newValue
trigger() // 通知重新解析模板更新界面
}, delay)
}
}
})
}
return {
text: useDebouncedRef('hello')
}
}
</script>
判断响应式数据
isRef
isReactive
isReadonly
isProxy 检查对象是否是由reactive或readonly创建的Proxy对象
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
2020-04-11 spring 启动时自动运行
2020-04-11 spring cloud oauth2授权服务 默认tokenService配置源码
2020-04-11 spring cloud 搭建oauth2授权服务 使用redis存储令牌
2020-04-11 spring cloud oauth2授权服务 clientDetails配置源码
2020-04-11 spring 验证框架
2020-04-11 IDEA 插件整理
2020-04-11 spring security笔记 默认登陆页面源码