Vue3中的toRef和toRefs的区别和用法示例小结

 更新时间:2024年08月10日 10:26:54   作者:藏蓝色攻城狮  
toRef和toRefs可以用来复制reactive里面的属性然后转成 ref,它保留了响应式,也保留了引用,也就是你从 reactive 复制过来的属性进行修改后,除了视图会更新,原有 ractive 里面对应的值也会跟着更新,本文介绍Vue3中toRef和toRefs的区别和用法,需要的朋友可以参考下

Vue3中的toRef和toRefs的区别和用法

刚做了Ref和Reactive区别及使用方法笔记(见文末补充介绍),再来总结一下,toReftoRefs 的作用、用法、区别

1、作用和区别

toRef 和 toRefs 可以用来复制 reactive 里面的属性然后转成 ref,而且它既保留了响应式,也保留了引用,也就是你从 reactive 复制过来的属性进行修改后,除了视图会更新,原有 ractive 里面对应的值也会跟着更新。

toRef: 复制 reactive 里的单个属性并转成 ref
toRefs: 复制 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中,RefReactive是两个实现响应式编程的关键的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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue+echart实现双柱状图

    vue+echart实现双柱状图

    这篇文章主要为大家详细介绍了vue+echart实现双柱状图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • 使用Vue实现调用接口加载页面初始数据

    使用Vue实现调用接口加载页面初始数据

    今天小编就为大家分享一篇使用Vue实现调用接口加载页面初始数据,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • 详解Vue中生命周期钩子函数的使用示例

    详解Vue中生命周期钩子函数的使用示例

    这篇文章主要为大家详细介绍了Vue中常见的生命周期钩子函数的使用,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-11-11
  • vue3实现图片缩放拖拽功能的示例代码

    vue3实现图片缩放拖拽功能的示例代码

    v3-drag-zoom 是基于 vue3 开发的一个缩放拖拽组件,方便开发者快速实现缩放拖拽功能,效果类似地图的缩放与拖拽,本文给大家介绍了vue3如何快速实现图片缩放拖拽功能,感兴趣的朋友可以参考下
    2024-04-04
  • Vue路由配置方法详细介绍

    Vue路由配置方法详细介绍

    Vue3和Vue2基本差不多,只不过需要将createRouter、createWebHistory从vue-router中引入,再进行使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-09-09
  • vue实现计数器简单制作

    vue实现计数器简单制作

    这篇文章主要为大家详细介绍了vue实现计数器简单制作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • 在vue项目中使用Jquery-contextmenu插件的步骤讲解

    在vue项目中使用Jquery-contextmenu插件的步骤讲解

    今天小编就为大家分享一篇关于在vue项目中使用Jquery-contextmenu插件的步骤讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • 关于vue-property-decorator的基础使用实践

    关于vue-property-decorator的基础使用实践

    这篇文章主要介绍了关于vue-property-decorator的基础使用实践,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Vue前端表格导出Excel文件的图文教程

    Vue前端表格导出Excel文件的图文教程

    我们在开发的时候会经常用的导出excel表格功能,刚好自己开发有遇到,就记录一下,下面这篇文章主要给大家介绍了关于Vue前端表格导出Excel文件的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • 一篇文章带你了解vue.js的事件循环机制

    一篇文章带你了解vue.js的事件循环机制

    这篇文章主要为大家详细介绍了vue.js事件循环机制,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03

最新评论