vue3<script setup>中toref()和torefs()

ops/2024/9/24 21:27:54/

在 Vue 3 中,特别是与 <script setup> 语法糖结合使用时,toRef 和 toRefs 是两个非常有用的 Composition API 函数,它们用于在 Composition API 中创建响应式引用,这些引用可以保持对原始响应式对象的响应性,同时允许你以解构的方式使用这些对象的属性,而不会丢失响应性。

toRef

toRef 函数用于将响应式对象中的某个属性转换成一个单独的响应式引用,并保持其响应性。这在你需要从响应式对象中提取一个属性,并且希望这个属性在后续的使用中仍然是响应式的时候非常有用。

<script setup>  
import { reactive, toRef } from 'vue';  const state = reactive({  foo: 1,  bar: 2  
});  // 使用 toRef 创建一个对 state.foo 的响应式引用  
const fooRef = toRef(state, 'foo');  // 现在 fooRef 是响应式的,并且与 state.foo 保持同步  
</script>

toRefs

toRefs 函数则是将响应式对象中的所有属性转换成单独的响应式引用,并保持其响应性。这在需要将一个响应式对象解构到多个变量中,同时希望这些变量保持响应性时非常有用。

<script setup>  
import { reactive, toRefs } from 'vue';  const state = reactive({  foo: 1,  bar: 2  
});  // 使用 toRefs 将 state 的所有属性转换成响应式引用  
const { foo, bar } = toRefs(state);  // 现在 foo 和 bar 都是响应式的,并且与 state.foo 和 state.bar 保持同步  
</script>

使用场景

  • toRef:当你只需要从响应式对象中提取一个或少数几个属性,并且希望这些属性在后续的使用中保持响应性时。
  • toRefs:当你需要将一个响应式对象解构到多个变量中,并且希望这些变量在后续的使用中都能保持对原始响应式对象的响应性时。

注意事项

  • 使用 toRef 或 toRefs 转换后的引用,在修改其值时,实际上是修改了原始响应式对象中的值。
  • 如果你不需要保持响应性,或者只是需要一次性的值,那么直接解构原始对象即可,但这样解构出来的变量将不再是响应式的。

http://www.ppmy.cn/ops/115471.html

相关文章

一.python入门

gyp的读研日记&#xff0c;哈哈哈哈&#xff0c;&#x1f642;&#xff0c;从复习python开始&#xff0c; 目录 1.python入门 1.1 Python说明书 1.2 Python具备的功能 1.3 学习前提 1.4 何为Python 1.5 编程语言 2.Python环境搭建 2.1 开发环境概述 2.2 Python的安装与…

第一篇-基础-第三章-SpringBoot基础

3.1-常用注解和SpringBootApplication标注分析 注解与业务逻辑无关,也不是程序本身,但可以对程序做出解释,程序中的类/方法/变量/参数/包等都可以被注解,完成编译检查工作,减少配置,减少重复工作等等。 常用注解 注解 标注位置 功能 Autowired 成员变量 自动注入依赖 B…

Flask学习之项目搭建

一、项目基本结构 1、 exts.py 存在的目的&#xff1a;在Python中&#xff0c;如果两个或更多模块(文件)相互导入对方&#xff0c;就会形成导入循环。例如&#xff0c;模块A导入了模块B&#xff0c;同时模块B又导入了模块A&#xff0c;这就会导致导入循环。 比如在这个项目中…

简单多状态dp第一弹 leetcode -面试题17.16.按摩师 -213.打家劫舍II

a​​​​​​​面试题 17.16. 按摩师 按摩师 题目: 分析: 使用动态规划解决 状态表示: dp[i] 表示&#xff1a;选择到 i 位置时&#xff0c;此时的最长预约时长。 但是我们这个题在 i 位置的时候&#xff0c;会面临 选择 或者 不选择 两种抉择&#xff0c;所依赖的状态需要…

监控和维护 Linux 系统的健康状态:从服务启动故障到操作系统查询

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

【ComfyUI】控制光照节点——ComfyUI-IC-Light-Native

原始代码&#xff08;非comfyui&#xff09;&#xff1a;https://github.com/lllyasviel/IC-Light comfyui实现1&#xff08;600星&#xff09;&#xff1a;https://github.com/kijai/ComfyUI-IC-Light comfyui实现2&#xff08;500星&#xff09;&#xff1a;https://github.c…

【可测试性实践】C++单元测试:gtest gmock

引言 google test是目前C主流的单元测试框架&#xff0c;本文介绍如何在工程引入gtest和gmock&#xff0c;并提供入门参考示例。根据黄金圈思维我们先思考Why&#xff08;为什么做&#xff09;&#xff0c;为什么我们要进行单元测试&#xff0c;为什么要引入mock手段来测试代码…

JavaScript:数组遍历

1、forEach let arr [1,2,3,4,5]arr.forEach(function(item,index,arr){arr[index] item 1 }) console.log(arr) // [2,3,4,5,6] 2、map let arr [1,2,3,4,5]let newArr arr.map(function(item,index,arr){return item1 }) console.log(newArr) // [2,3,4,5,6]