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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在Vue3项目中集成CodeMirror创建SQL编辑器的方法详解

    在Vue3项目中集成CodeMirror创建SQL编辑器的方法详解

    在这篇文章中,我们将学习如何在 Vue 3 项目中集成 CodeMirror,以创建一个支持 SQL 语法高亮和自动补全的代码编辑器,需要的朋友可以参考下
    2025-04-04
  • VUE PC端可拖动悬浮按钮的实现代码

    VUE PC端可拖动悬浮按钮的实现代码

    这篇文章主要介绍了VUE PC端可拖动悬浮按钮的实现代码,通过实例代码介绍了父页面引用的方法,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • Vue在页面右上角实现可悬浮/隐藏的系统菜单

    Vue在页面右上角实现可悬浮/隐藏的系统菜单

    这篇文章主要介绍了Vue在页面右上角实现可悬浮/隐藏的系统菜单,实现思路大概是通过props将showCancel这个Boolean值传递到子组件,对父子组件分别绑定事件,来控制这个系统菜单的显示状态。需要的朋友可以参考下
    2018-05-05
  • 解决vue2+vue-router动态路由添加及路由刷新后消失问题

    解决vue2+vue-router动态路由添加及路由刷新后消失问题

    这篇文章主要介绍了解决vue2+vue-router动态路由添加及路由刷新后消失问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • 浅析Vue 中的 render 函数

    浅析Vue 中的 render 函数

    在vue中我们使用模板HTML语法组建页面的,使用render函数我们可以用js语言来构建DOM,今天小编就通过本文给大家简单介绍下Vue 中 render 函数,需要的朋友可以参考下
    2020-02-02
  • 关于vue中watch检测到不到对象属性的变化的解决方法

    关于vue中watch检测到不到对象属性的变化的解决方法

    本篇文章主要介绍了关于vue中watch检测到不到对象属性的变化的解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • 详解vue结合el-table实现表格小计总计需求(summary-method)

    详解vue结合el-table实现表格小计总计需求(summary-method)

    这篇文章主要介绍了vue结合el-table实现表格小计总计需求(summary-method),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • vue3封装数字滚动组件的实现示例

    vue3封装数字滚动组件的实现示例

    本文主要介绍了vue3封装数字滚动组件的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • vue用Object.defineProperty手写一个简单的双向绑定的示例

    vue用Object.defineProperty手写一个简单的双向绑定的示例

    这篇文章主要介绍了用Object.defineProperty手写一个简单的双向绑定的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • vue2中使用AntV 以g2plot为实例

    vue2中使用AntV 以g2plot为实例

    这篇文章主要介绍了vue2中使用AntV 以g2plot为实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04

最新评论