最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3+ts 兄弟組件之間傳值的實(shí)現(xiàn)

 更新時(shí)間:2023年11月26日 15:09:11   作者:你的美,讓我癡迷  
Vue3是一款流行的前端框架,它支持多種傳值方式,包括兄弟組件之間的傳值,本文主要介紹了vue3+ts 兄弟組件之間傳值的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下

父級(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)文章

最新評(píng)論

南岸区| 钟祥市| 灵武市| 子洲县| 竹北市| 温宿县| 吉安县| 绵阳市| 无极县| 海伦市| 金湖县| 富锦市| 平利县| 江油市| 沂水县| 衡阳县| 广东省| 普洱| 长顺县| 昭通市| 巴林左旗| 进贤县| 关岭| 孝感市| 白河县| 南汇区| 阳高县| 凤山市| 辽宁省| 莱州市| 蒲城县| 中牟县| 黄大仙区| 万宁市| 读书| 梧州市| 泉州市| 南开区| 岐山县| 临颍县| 凌源市|