前军教程网

中小站长与DIV+CSS网页布局开发技术人员的首选CSS学习平台

Vue3开发极简入门(15):组件间通信之emit

emit就是事件Event。

这一节没废话,直接上代码,父组件:

<template>
    <div class="father">
        <h1>父组件</h1>
        装货地:北京,卸货地:海口,发车时间:{{ departTime }}
        <!-监听子组件的事件,并设置回调函数->
        <Son @set-depart-time="setDepartTime"/>
    </div>
</template>
<script lang='ts' setup name='Father'>
import { ref } from 'vue';
import Son from './Son.vue';

const departTime = ref('待定')

function setDepartTime(val: string) {
    departTime.value = val
}
</script>
<style scoped>
.father {
    background-color: darkseagreen;
    box-shadow: 0 0 10px black;
    border-radius: 10px;
    height: 100%;
}
</style>

子组件:

<template>
    <div class="son">
        <h1>子组件</h1>
        发车时间:{{ departTime }} <br>
        <button @click="letsGo">发车上报</button>
    </div>
</template>
<script lang='ts' setup name='Son'>
import { ref } from 'vue';
const departTime = ref('待定')

function letsGo() {
    departTime.value = "2024-01-01 11:11:11." + Math.random()
    // 触发事件&传参
    emit('set-depart-time', departTime.value)
}

//声明事件,并返回emit以便进行相关操作
const emit = defineEmits(['set-depart-time'])
</script>
<style scoped>
.son {
    background-color: silver;
    padding: 10px;
    margin-top: 10px;
    box-shadow: 0 0 10px black;
    border-radius: 10px;
    width: 90%;
    margin: auto;
}
</style>

说明:

  • 父组件监听了子组件名为:set-depart-time的事件,其对应的回调函数是setDepartTime。
  • 子组件通过const emit = defineEmits(['事件名A','事件名B'])声明了要触发的事件,并返回一个方法(emit)供我们使用。
  • 子组件通过emit('事件名', 参数...)触发事件。从而达到子传父的目的。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言