Vue3中的toRef和toRefs的区别和用法示例小结
作者:藏蓝色攻城狮
Vue3中的toRef和toRefs的区别和用法
刚做了Ref和Reactive区别及使用方法笔记(见文末补充介绍),再来总结一下,toRef
和 toRefs
的作用、用法、区别
1、作用和区别
toRef 和 toRefs 可以用来复制 reactive 里面的属性然后转成 ref,而且它既保留了响应式,也保留了引用,也就是你从 reactive 复制过来的属性进行修改后,除了视图会更新,原有 ractive 里面对应的值也会跟着更新。
toRef
: 复制 reactive 里的单个属性并转成 reftoRefs
: 复制 reactive 里的所有属性并转成 ref
2、使用方式
2.1 toRef使用示例
<template> <h2> reactive-name: {{ user.name }} </h2> <h2> toRef-name: {{ uName }} </h2> <button @click="onChangeName">点击</button> </template> <script> import { reactive, toRef } from 'vue' export default { setup() { let user = reactive({ name: 'zs', age: 18 }) // 复制 user 里的 name 属性 let uName = toRef(user, 'name') // 更改 const onChangeName = () => { uName.value = 'ls' } return { user, uName, onChangeName } } } </script>
2.2 toRefs使用示例
<template> <h2> {{ name }} </h2> <h2> {{ age }} </h2> </template> <script> import { reactive, toRef } from 'vue' export default { setup() { let user = reactive({ name: 'zs', age: 18 }) return { ...toRefs(user), } } } </script>
补充:vue3响应式:Ref和Reactive区别及使用方法
vue3响应式:Ref和Reactive区别及使用方法
在Vue3中,Ref
和Reactive
是两个实现响应式编程的关键的API。
1、区别
Ref
:用于创建一个响应式的基本数据类型,比如数字、字符串等。它将普通的数据变成响应式数据,可以监听数据的变化。使用Ref时,我们可以通过.value
来访问和修改数据的值。
Reactive
:Reactive则用于创建一个响应式对象,可以包含多个属性。通过Reactive,我们可以将整个对象变成响应式,使对象的任何属性发生变化时都能被检测到。
2、ref使用场景
Ref
:适用于管理简单的单一数据,如计数器、输入框的值等。
使用ref实现计数器示例
<template> <div> <p>Count: {{ i }}</p> <button @click="increment">Increment</button> </div> </template> <script> import { ref } from 'vue'; setup(){ const i = ref(0); const increment = () => { i.value++; }; return{ i,increment } } </script>
注意
1、在js中访问/修改需要使用.value
2、在模版中插值不需要使用.value
3、Reactive使用场景
使用Reactive实现管理用户信息和订单示例1
<template> <div> <p>User Name: {{ user.name }}</p> <p>Age: {{ user.age }}</p> </div> </template> <script> import { reactive } from 'vue'; setup(){ const user = reactive({ name: 'Alice', age: 30 }); return{ user } } </script>
使用Reactive实现管理用户信息和订单示例2
<template> <div> <p>User Name: {{ name }}</p> <p>Age: {{ age }}</p> </div> </template> <script setup> import { reactive } from 'vue'; setup(){ const user = reactive({ name: 'Alice', age: 30 }); return{ ...toRefs(user) } } </script>
注意,return中是否使用展开运算符的差别
到此这篇关于Vue3中的toRef和toRefs的区别和用法的文章就介绍到这了,更多相关Vue3 toRef和toRefs内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!