首页 > 其他分享 >Vue3 toRef与toRefs

Vue3 toRef与toRefs

时间:2023-04-20 11:00:18浏览次数:63  
标签:vue name toRefs toRef person Vue3 ref

视频

直接用ref是创建新的对象

10.toRef

  • 作用:创建一个 ref 对象,其value值指向另一个对象中的某个属性。

  • 语法:const name = toRef(person,'name')

  • 应用: 要将响应式对象中的某个属性单独提供给外部使用时。

  • 扩展:toRefstoRef功能一致,但可以批量创建多个 ref 对象,语法:toRefs(person)

components

Demo.vue

<template>
	<h4>{{person}}</h4>
	<h2>姓名:{{name}}</h2>
	<h2>年龄:{{age}}</h2>
	<h2>薪资:{{job.j1.salary}}K</h2>
	<button @click="name+='~'">修改姓名</button>
	<button @click="age++">增长年龄</button>
	<button @click="job.j1.salary++">涨薪</button>
</template>

<script>
	import {ref,reactive,toRef,toRefs} from 'vue'
	export default {
		name: 'Demo',
		setup(){
			//数据
			let person = reactive({
				name:'张三',
				age:18,
				job:{
					j1:{
						salary:20
					}
				}
			})

			// const name1 = person.name
			// console.log('%%%',name1)

			// const name2 = toRef(person,'name')
			// console.log('####',name2)

			const x = toRefs(person)
			console.log('******',x)

			//返回一个对象(常用)
			return {
				person,
				// name:toRef(person,'name'),
				// age:toRef(person,'age'),
				// salary:toRef(person.job.j1,'salary'),
				...toRefs(person)
			}
		}
	}
</script>


App.vue

<template>
	<button @click="isShowDemo = !isShowDemo">切换隐藏/显示</button>
	<Demo v-if="isShowDemo"/>
</template>

<script>
	import {ref} from 'vue'
	import Demo from './components/Demo'
	export default {
		name: 'App',
		components:{Demo},
		setup() {
			let isShowDemo = ref(true)
			return {isShowDemo}
		}
	}
</script>


main.js

//引入的不再是Vue构造函数了,引入的是一个名为createApp的工厂函数
import { createApp } from 'vue'
import App from './App.vue'

//创建应用实例对象——app(类似于之前Vue2中的vm,但app比vm更“轻”)
const app = createApp(App)

//挂载
app.mount('#app')

标签:vue,name,toRefs,toRef,person,Vue3,ref
From: https://www.cnblogs.com/chuixulvcao/p/17335924.html

相关文章

  • Vue3 自定义hook
    视频9.自定义hook函数什么是hook?——本质是一个函数,把setup函数中使用的CompositionAPI进行了封装。类似于vue2.x中的mixin。自定义hook的优势:复用代码,让setup中的逻辑更清楚易懂。componentsDemo.vue<template> <h2>当前求和为:{{sum}}</h2> <button@clic......
  • vue2升vue3后部分异常解决
    element-ui升为element-plus首先建议参考element-plus官方站点:https://element-plus.org/zh-CN/部分组件标签直接变更如el-submenu变更为el-sub-menu浏览器提示ElementPlusError:[ElOnlyChild]novalidchildnodefound哪个页面有该提示就搜"slot=",然后到element......
  • Vue3 watchEffect函数
    视频3.watchEffect函数watch的套路是:既要指明监视的属性,也要指明监视的回调。watchEffect的套路是:不用指明监视哪个属性,监视的回调中用到哪个属性,那就监视哪个属性。watchEffect有点像computed:但computed注重的计算出来的值(回调函数的返回值),所以必须要写返回值。而wa......
  • Vue3 watch时value的问题
    视频componentsDemo.vue<template> <h2>当前求和为:{{sum}}</h2> <button@click="sum++">点我+1</button> <hr> <h2>当前的信息为:{{msg}}</h2> <button@click="msg+='!'">修改信息</button&g......
  • vue3学习之tabler组件Layout布局
    上一篇使用的bootstrap-vue-next项目迭代很快,考虑还未发文档和正式版本(自己菜)改用原生bootstrap模板tabler项目。tabler安装运行不想安装可直接打开tabler\demo目录下html文件浏览查看效果#获取后目录下运行npminstall#需要先安装https://github.com/oneclick/rubyinst......
  • Vue3 watch监视数据
    watch监视ref定义的数据视频watch监视reactive定义的数据视频2.watch函数与Vue2.x中watch配置功能一致两个小“坑”:监视reactive定义的响应式数据时:oldValue无法正确获取、强制开启了深度监视(deep配置失效)。监视reactive定义的响应式数据中某个属性时:deep配置有效。/......
  • vue3微信公众号商城项目实战系列(9)购物车页面
    本篇显示购物车中的商品,购物车表结构如下,我们通过接口服务抓取登录用户的购物车信息。表名字段功能shoppingcartcart_id(int)购物车编号user_id(int)用户编号goods_id(int)商品编号goods_name(varchar)商品名称photo(varchar)商品图片price(decimal)......
  • Vue3 computed计算属性
    视频7.计算属性与监视1.computed函数与Vue2.x中computed配置功能一致写法import{computed}from'vue'setup(){... //计算属性——简写letfullName=computed(()=>{returnperson.firstName+'-'+person.lastName})//计算属性——......
  • vue3微信公众号商城项目实战系列(8)商品展示页面
    本篇实现在首页展示商品功能,表结构如下:表名字段功能goodsgoods_id(int)商品编号goods_name(varchar)商品名称photo(varchar)商品图片price(decimal)价格商品表页面呈现效果如下: 第1步:在api.js中加入获取首页商品信息和加购物车的接口方法,如下......
  • 如何在 vue3 中使用 jsx/tsx?
    我们都知道,通常情况下我们使用vue大多都是用的SFC(SignleFileComponent)单文件组件模式,即一个组件就是一个文件,但其实Vue也是支持使用JSX来编写组件的。这里不讨论SFC和JSX的好坏,这个仁者见仁智者见智。本篇文章旨在带领大家快速了解和使用Vue中的JSX语法,好......