首页 > 其他分享 >Vue3中如何响应式解构 props

Vue3中如何响应式解构 props

时间:2024-09-26 09:23:45浏览次数:6  
标签:count info const log props watch value 解构 Vue3

1、父组件

<template>
  <Children :count="count" :info="info"  />
</template>

<script setup lang="ts">
import { ref, reactive } from "vue";
import Children from "./Comp.vue";

const count = ref(0);
const info = ref({
	age: 18,
});
setTimeout(() => {
	count.value++;
	//info.value.age = 98
	info.value = { age: 99 };
}, 1000);
</script>

2、子组件,方式一

<template>
  <div>{{ localcount }}</div>
  <div>{{ info }}</div>
  <button @click="onClick">点击</button>
</template>

<script setup lang="ts">
import { watchEffect, watch } from "vue";

const { count: localcount = 0, info = { age: 17 } } = defineProps<{
  count: number;
  info: object;
}>();

const onClick = () => {
  console.log(localcount); 
};

watchEffect(() => {
  console.log("watchEffect:count:", localcount);
});

watch(() => localcount, 
      () => { console.log("watch:count:", localcount); })
</script>

3、子组件,方式二

/watch(count, 
      () => { console.log("watch:count:", count.value); })<template>
  <div>{{ count }}</div>
  <div>{{ info }}</div>
  <button @click="onClick">点击</button>
</template>

<script setup lang="ts">
import { toRef, toRefs,watchEffect,watch } from "vue";

const props = defineProps<{
	count: number;
  info: object;
}>();

// 2种写法都行。
// const count = toRef(props, "count");
// const info  = toRef(props, "info");
const { count, info } = toRefs(props);

const onClick = () => {
	console.log(count.value); 
};

watchEffect(() => {
  console.log("watchEffect:count:", count.value);
});

watch(() => count.value, 
      () => { console.log("watch:count:", count.value); })
//或者
watch(count, 
      () => { console.log("watch:count:", count.value); })
</script>

标签:count,info,const,log,props,watch,value,解构,Vue3
From: https://www.cnblogs.com/springsnow/p/18432736

相关文章

  • vue3中使用百度地图
    1、在入口的index.html中添加以下代码,更换成自己的key<scriptsrc="//api.map.baidu.com/api?type=webgl&v=1.0&ak=yourkey"></script>2、新增一个.d.ts文件,全局声明BMapGL变量declareconstBMapGL:any不然的话会报这种错误找不到名称“BMapGL”。3、增加地图......
  • 使用 Vue3、TypeScript 和 Spring Boot 实现文件上传至 MinIO 和 OSS
    目录《使用Vue3、TypeScript和SpringBoot实现文件上传至MinIO和OSS》一、技术选型二、环境搭建三、前端实现四、后端实现五、代码解析在现代web应用开发中,文件上传是一个常见的需求。本文将介绍如何使用Vue3、TypeScript和SpringBoot实现文件上传功能,并......
  • vue3-vben-admin开发记录、知识点
    vue3-vben-admin知识点一、vue3写法1、生命周期setup-组件在创建时onMounted-挂载在dom时运行onUpdated-响应数据修改时运行2、reactive定义:接收一个普通对象然后返回该普通对象的响应式代理。等同于2.x的Vue.observable()定义一个全局常量letotherParam=r......
  • Vue3 - 详细实现安装引入高德地图并查询展示周边交通/教育/医疗/商场/生活/娱乐等POI
    前言Vue2版本,请访问这篇文章。在vue3|nuxt3项目开发中,详解高德地图根据当前定位获取周边附近的商圈,vue3高德地图获取周边商圈并将这些地址位置列出来供用户点击跳转和选择,获取当前位置或指定区域周边的交通出行、学校教育、医院诊所、商场购物、生活娱乐、旅游景......
  • vue3开发中易遗漏的常见知识点
    组件样式的特性ScopedCSS之局部样式的泄露示例(vue3):父组件:<template><h4>AppTitle</h4><hello-world></hello-world></template><script>importHelloWorldfrom'./HelloWorld.vue';exportdefault{name:'App......
  • 1、A+B(变量+数据类型+获取用户的输入(ACM)+解构赋值)
    总结:变量letvs.var:var现在用的比较少,现在常用letlet声明变量有以下几个注意点:变量只有声明之后才能使用。不允许重复声明变量const:声明常量,值不可修改consta=100;a=200;//报错也就意味着const值一旦声明就必须得立即初始化consta;//报错数据类型(JS分......
  • Vue3路由权限控制
    Vue3路由权限控制设置路由:静态路由与动态路由静态路由:这些是在应用启动时就已经定义好的路由,通常包括一些不需要权限验证的公共页面,如登录页、404页面等。动态路由:这些路由是根据用户的权限决定的,通常包括需要权限验证的页面。登录获取token/sessionId等数据,利用pi......
  • Vue3 流程图组件库 :Vue Flow
    VueFlow是一个轻量级的Vue3组件库,它允许开发者以简洁直观的方式创建动态流程图。本篇文章记录一下VueFlow的基本用法安装npmadd@vue-flow/core流程图的构成Nodes、Edges、Handles主题默认样式通过导入样式文件应用/*thesearenecessarystylesforvueflow*/@import'......
  • 利用vscode-icons-js在Vue3项目中实现文件图标展示
    背景:在开发文件管理系统或类似的项目时,我们常常需要根据文件类型展示对应的文件图标,这样可以提高用户体验。本文将介绍如何在Vue3项目中利用vscode-icons-js库,实现类似VSCode的文件图标展示效果。先看效果:一、引入vscode-icons-js首先,我们需要安装vscode-icons-js库。你可以使用n......
  • Vue3 注册及使用全局方法
    一、背景自己的一个考公网站,需求是用户登录系统,但是用户去查看功能时要判断当前用户是否有是会员,如果不是会员,那么查看其他功能时需要弹窗说不是vip,如果是会员则可以直接查看。二、实现首先上截图。 1.Vue3全局注册方法1.新建popToast.jsimportCookiesfrom"js-c......