vue3+ts 兄弟組件之間傳值的實(shí)現(xiàn)
父級(jí):
<template>
<div>
<!-- <A @on-click="getFlag"></A>
<B :flag="Flag"></B> -->
<A></A>
<B></B>
</div>
</template>
<script setup lang="ts">
import { ref } from "vue";
import A from "./components/A.vue";
import B from "./components/B.vue";
// const Flag = ref(false);
// const getFlag = (params: boolean) => {
// Flag.value = params;
// };
</script>
<style></style>
A組件:
<template>
<div class="A">
<button @click="emitB">派發(fā)一個(gè)事件</button>
</div>
</template>
<script setup lang="ts">
// const emit = defineEmits(["on-click"]);
import Bus from '../bus';
let flag = false;
const emitB = () => {
flag = !flag;
// emit("on-click", flag);
Bus.emit('on-click',flag);
};
</script>
<style>
.A{
width: 200px;
height: 200px;
color: #fff;
background: blue;
}
</style>
B組件:
<template>
<div class="B">
<h1>B組件</h1>
{{Flag}}
</div>
</template>
<script setup lang='ts'>
import Bus from "../Bus";
import {ref} from "vue";
let Flag=ref(false);
Bus.on('on-click',(flag:boolean)=>{
Flag.value=flag;
})
// type Props={
// flag:boolean
// }
// defineProps<Props>();
</script>
<style>
.B{
width:200px;
height: 200px;
color:#fff;
background: red;
}
</style>
Bus.ts:
type BusClass = {
emit: (name:string) => void,
on:(name:string,callback:Function)=>void
}
type Pramskey = string | number | symbol;
type List = {
[key:Pramskey]:Array<Function>
}
class Bus implements BusClass{
list: List
constructor() {
this.list={}
}
emit(name: string,...args:Array<any>) {
let evenentName:Array<Function> = this.list[name];
evenentName.forEach(fn => {
fn.apply(this,args)
})
}
on(name:string,callback:Function) {
let fn:Array<Function> = this.list[name] || [];
fn.push(callback);
this.list[name] = fn;
}
}
export default new Bus();
效果圖:

到此這篇關(guān)于vue3+ts 兄弟組件之間傳值的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)vue3+ts 兄弟組件傳值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue.js最佳實(shí)踐(五招助你成為vuejs大師)
這篇文章主要介紹了Vue.js最佳實(shí)踐,本文主要面向?qū)ο笫怯幸欢╲ue.js 編輯經(jīng)驗(yàn)的開(kāi)發(fā)者,需要的朋友可以參考下2018-05-05
前端實(shí)現(xiàn)不同角色登入展示不同頁(yè)面效果實(shí)例
要實(shí)現(xiàn)不同角色登錄跳轉(zhuǎn)不同的前端頁(yè)面,可以在登錄成功后,根據(jù)用戶的角色信息,使用路由跳轉(zhuǎn)到不同的頁(yè)面,這篇文章主要給大家介紹了關(guān)于前端實(shí)現(xiàn)不同角色登入展示不同頁(yè)面效果的相關(guān)資料,需要的朋友可以參考下2024-08-08
解決echarts vue數(shù)據(jù)更新,視圖不更新問(wèn)題(echarts嵌在vue彈框中)
這篇文章主要介紹了解決echarts vue數(shù)據(jù)更新,視圖不更新問(wèn)題(echarts嵌在vue彈框中),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
vue在同一個(gè)頁(yè)面重復(fù)引用相同組件如何區(qū)分二者
這篇文章主要介紹了vue在同一個(gè)頁(yè)面重復(fù)引用相同組件如何區(qū)分二者,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
vue項(xiàng)目實(shí)現(xiàn)圖形驗(yàn)證碼
這篇文章主要為大家詳細(xì)介紹了vue項(xiàng)目實(shí)現(xiàn)圖形驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04
elementui 日期選擇器el-date-picker如何給指定日期添加圓點(diǎn)標(biāo)注
這篇文章主要介紹了elementui 日期選擇器el-date-picker如何給指定日期添加圓點(diǎn)標(biāo)注,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07
element的el-form和el-table嵌套使用實(shí)現(xiàn)
本文主要介紹了element的el-form和el-table嵌套使用實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
React/vue開(kāi)發(fā)報(bào)錯(cuò)TypeError:this.getOptions?is?not?a?function
這篇文章主要給大家介紹了關(guān)于React/vue開(kāi)發(fā)報(bào)錯(cuò)TypeError:this.getOptions?is?not?a?function的解決方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07

