最新国产好看的视频,伊人天堂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)論

新疆| 册亨县| 临沭县| 始兴县| 左云县| 江安县| 连南| 巨野县| 阳泉市| 宝丰县| 聊城市| 大余县| 南汇区| 广东省| 余干县| 泰兴市| 大埔县| 庆安县| 娱乐| 康定县| 同仁县| 东乌| 台东市| 宁德市| 金山区| 永善县| 苍山县| 台东市| 攀枝花市| 南投市| 东乌珠穆沁旗| 东海县| 出国| 阆中市| 平武县| 灵山县| 博爱县| 巴中市| 宁德市| 阜新市| 锦屏县|