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

Vue3:详解toRef

toRef的核心作用是什么

toRef本质上是创建了一个 Ref 对象 ,因为从reactive对象中提取出来的属性,会流失响应性,toRef就是为了解决这个问题,它提取单个属性并保持响应式连接。

基本用法

import { reactive, toRef } from 'vue'const state = reactive({name: '张三',age: 25
})// 创建对 name 属性的 ref 引用
const nameRef = toRef(state, 'name')

关键特性:双向同步

// 修改源对象,ref 同步更新
state.name = '李四'
console.log(nameRef.value) // '李四'// 修改 ref,源对象也同步更新  
nameRef.value = '王五'
console.log(state.name) // '王五'

解决的核心问题

直接解构会丢失响应式:

const state = reactive({ name: '张三' })// ❌ 错误做法
const { name } = state
state.name = '李四' // name 不会更新!// ✅ 正确做法
const nameRef = toRef(state, 'name')
state.name = '李四' // nameRef.value 同步更新

实际应用场景

1. 组件间传递单个属性

// 父组件
const state = reactive({ name: '张三', age: 25 })// 只传递 name,但保持响应式
<ChildComponent :name="toRef(state, 'name')" />

2. 组合式函数中精确暴露

function useForm() {const form = reactive({username: '',password: '', remember: false})// 只暴露需要单独控制的字段return {usernameRef: toRef(form, 'username'),passwordRef: toRef(form, 'password')}
}// 使用时
const { usernameRef, passwordRef } = useForm()

3. 处理可选属性

const state = reactive({ name: '张三' })// 为可能不存在的属性设置默认值
const scoreRef = toRef(state, 'score', 100)
console.log(scoreRef.value) // 100

注意事项

  • 源对象必须是 reactive 创建的,普通对象无效

与 ref 的区别

const state = reactive({ count: 0 })// toRef: 保持连接
const countRef1 = toRef(state, 'count')
countRef1.value++ // state.count 也变成 1// ref: 独立副本  
const countRef2 = ref(state.count)
countRef2.value++ // state.count 还是 0

总结

toRef 是响应式对象属性的“精准提取器”,确保提取出来的属性仍然保持响应式连接,特别适用于需要单独管理或传递某个属性的场景。

http://www.dtcms.com/a/593465.html

相关文章:

  • Nvm 实现vue版本切换
  • Jenkins配置vue前端项目(最简单的操作)
  • 网站中如何做图片轮播flashfxp链接网站
  • Bootstrap 模态框
  • 做网站 怎么样找客户个人与公司网站备案
  • YMatrix 通过“可信数据库”测评!超融合架构能否成为未来趋势?
  • 分布式系统概要
  • 【C#】System.Text.Encoding.Default 属性在framework和.netcore中的区别
  • 天山路街道网站建设热搜关键词查询
  • Node.js:让JavaScript走出浏览器
  • AEO终极指南:步步为营,提升内容的AI可见性
  • vue甘特图
  • 家具网站开发设计论文电商商城开发
  • STM32时钟系统对于STM32F1系列(详解)
  • C++set学习笔记
  • 做 个收废品网站建设教育网站
  • 做中英文游戏门户网站关键词怎么弄棠下手机网站建设电话
  • 2025/11/10 IO流(转换流、序列化流/反序列化流、打印流、压缩流/解压缩流)Commons-io Hutool工具包 练习-制造假数据
  • 底层视觉及图像增强-项目实践(十六-0-(11):针对LED低灰细节丢失的AI超分技术:从原理到产品化实战):从奥运大屏,到手机小屏,快来挖一挖里面都有什么
  • 单页网站系统网站开发与设计.net
  • CCW 软件新手入门:从硬件组态到程序编辑完整指南
  • 审稿人:怎么不用交叉注意力做特征融合?
  • 算法155. 最小栈
  • 13.【NXP 号令者RT1052】开发——实战-QTMR 定时器中断
  • LeetCode 739. 每日温度
  • seo网站优化专家绿色资源网
  • 数据库迁移实操与金仓数据库技术优势:从语法兼容到自动化落地
  • 监听错误的方式有哪些?
  • 一阶时域信号的分类
  • 网站搭建推广优化企业网站建公司