058、Vue3+TypeScript基础,页面通讯之父页面使用$parent的用法

news/2024/9/13 8:47:23/文章来源:https://www.cnblogs.com/tianpan2019/p/18378596

01、main.js代码如下:

// 引入createApp用于创建Vue实例
import {createApp} from 'vue'
// 引入App.vue根组件
import App from './App.vue'// 引入emitter用于全局事件总线
// import emitter from '@/utils/emitter'

const app = createApp(App);// App.vue的根元素id为app
app.mount('#app')

02、App.vue代码如下:

<template><div class="app"><h2 class="title">App.Vue</h2><Father/></div>
</template><script lang="ts" setup name="App">
import Father from "@/view/Father.vue";
</script><style scoped>
.app {background-color: #ddd;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;
}.nav-button {display: inline-block; /* 让链接显示为块级元素,以便应用宽度和高度 */padding: 10px 20px; /* 内边距 */margin: 0 5px; /* 外边距,用于按钮之间的间隔 */text-decoration: none; /* 移除下划线 */color: white; /* 文本颜色 */background-color: #007bff; /* 背景颜色 */border-radius: 5px; /* 边框圆角 */transition: background-color 0.3s; /* 平滑过渡效果 */
}.nav-button:hover {background-color: #0056b3; /* 鼠标悬停时的背景颜色 */
}.nav-button.router-link-active {background-color: #28a745; /* 当前激活(路由匹配)时的背景颜色 */
}.mai-content {/* 添加边框样式 */border: 2px solid #000; /* 边框宽度、样式和颜色 */border-radius: 5px; /* 可选:添加边框圆角 */padding: 20px; /* 可选:给内部内容添加一些内边距 */margin: 20px; /* 可选:给元素添加一些外边距,以便与其他元素隔开 */
}
</style>

03、Father.vue代码如下:

<template><div class="mypage"><h3>我是父页面</h3><h4>房产 {{ house }}</h4><button @click="changeToy">修改Child1玩具</button><button @click="changePC">修改Child2电脑</button><button @click="changeAllChildBook($refs)">修改所有子页面数据</button><br><br><child1 ref="c1"/><br><child2 ref="c2"/></div>
</template><script lang="ts" name="Father" setup>
import {ref} from "vue";
import Child1 from "@/view/Child1.vue";
import Child2 from "@/view/Child2.vue";//数据
let house = ref(4)
let c1 = ref()
let c2 = ref()function changeToy() {c1.value.pc = '小米'
}
function changePC() {c2.value.toy = '手机'
}
function changeAllChildBook(refs: { [key: string]: any })
{console.log(refs)for (let key in refs) {//修改子页面数据
    refs[key].book += 1}
}
defineExpose({house})
</script>
<style scoped>
.mypage {background-color: #ddd;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;button {margin: 0 5px;}
}
</style>

04、Child1.vue代码如下:

<template><div class="mypage"><h3>我是子页面1</h3><h4>电脑:{{ pc }}</h4><h4>书籍:{{ book }} 本</h4><button @click="minusHouse($parent)">拿个房子</button></div>
</template><script lang="ts" name="Child1" setup>
import {ref} from "vue";
//数据
let pc = ref('华硕')
let book = ref(6)function minusHouse($parent: any) {$parent.house -= 1
}//暴露pc, book这2个数据
defineExpose({pc, book})
</script><style scoped>
.mypage {background-color: #ddd;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;button {margin: 0 5px;}
}
</style>

05、Child2.vue代码如下:

<template><div class="mypage"><h3>我是子页面2</h3><h4>玩具:{{ toy }}</h4><h4>书籍:{{ book }} 本</h4></div>
</template><script lang="ts" name="Child2" setup>
import {ref} from "vue";
//数据
let toy = ref('奥特曼')
let book = ref(1)
//暴露toy, book这2个数据
defineExpose({toy, book})
</script><style scoped>
.mypage {background-color: #ddd;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;button {margin: 0 5px;}
}
</style>

06、布局如下:

 07、浏览器效果如下:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/786827.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

平面几何基本功:用导角法解决若干问题

引理1 如图, 设锐角\(\small \triangle ABC\)的外接圆为\(\small\Omega, X,Y,Z\)分别是劣弧\(\small\mathop{BC}\limits^\frown,\mathop{AC}\limits^\frown,\mathop{AB}\limits^\frown\)的中点.证明:\(\small\triangle XYZ\)的垂心是\(\small\triangle ABC\)的内心.分析:易知…

全网最适合入门的面向对象编程教程:38 Python常用复合数据类型-使用列表实现堆栈、队列和双端队列

在 Python 中,列表(list)是一种非常灵活的数据结构,可以用来实现堆栈(stack)、队列(queue)和双端队列(deque)。这些数据结构虽然在使用时遵循不同的操作规则,但都可以通过 Python 列表来高效地实现。全网最适合入门的面向对象编程教程:38 Python 常用复合数据类型-…

985计算机院倒数第一某废物的自述

985计算机院倒数第一某废物的自述 严格来说是某双一流,但无所谓了我我来自某发展一般的小县城,但好在家境还算**中等** 我高中成绩一直一般,但好在高三小镇做题家buff生效,在高考中超常发挥,上了一所想都没想过的某双一流 我选择专业时奉承母令,选择了计算机专业,也算是…

CLRCore

1.CLR:公共语言运行时,就是IL(中间语言)的运行环境;安装.net Framewrok的时会安装CLR 2.堆栈内存分配: CLR进行内存的分配 值类型分配在栈中,变量和值都是在线程栈中(结构体是输出值类型,结构体默认继承system.valuetype,所以不能继承其他类了,结构体不能有无参构造函…

CSP-S 2024 游记

壹 我有一个朋友叫小 W ,他最近有点闷。 我问他为什么闷,他跟我说他根本就没准备初赛。 我说你这么牛,连初赛都不用准备。 他说,他在梦中见到了 ddz ,他问 ddz 没准备初赛怎么办, ddz 给他的答复是:不是,哥们。你都免初赛了还问我干啥啊。 贰 我喜欢月光。 空空,不可控…

别样的ABC大战

前言:BYD ABC 大战。此事发生于2024年3月,为保护隐私(有的人应该能看出来哈哈),人物名字均使用字母代替。故事虽根据真实事件改编,但较为夸张。 一天,W老师给我发来微信。她说:“你敢不敢和其他人举行ABC大战?”我豪爽的答应了:“我当然敢!”周六下午在花园路XX号举…

【NextJS】中间件实战介绍

原创 洞窝技术使用 Next.js 中间件实现高性能个性化 在当今的数字时代,用户期望获得量身定制的在线体验。个性化已经从一个奢侈品变成了必需品,尤其是对于希望在竞争激烈的市场中脱颖而出的企业来说。然而,实现高性能的个性化往往是一个挑战,需要在用户体验和系统性能之间取得…

排列组合问题

排列公式 从 \(n\) 个数中选出 \(m\) 个数并且排序。 公式推导: \[ A^2_3 = 3 \times 2 = 6\\3_6 = 6 \times 5 \times 4 = 120\\ A^2_6 = 6 \times 5 = 30\\ \therefore A^m_n = n(n-1)(n-2)\dots (n-m+1)\\ 又\because n!=n\times (n-1)\times (n-2) \dots \times 2\times…

Docker简介及安装

本系列将会与大家分享 Docker 的相关知识。本章主要简要介绍 Docker,并指导大家如何在 CentOS 7 上进行 Docker 的安装。本系列将会与大家分享 Docker 的相关知识。本章主要简要介绍 Docker,并指导大家如何在 CentOS 7 上进行 Docker 的安装。废话不多说,下面我们直接进入主…