Vue3 中 render函数中怎么接收子组件$emit发送的事件

发布于 2022-09-13 00:48:30 字数 829 浏览 21 评论 0

Vue3.x 中 render 函数中怎么接收子组件$emit发送的事件

子组件

<template>
    <div class='action-btns'>
        <q-btn v-if='start' @click.stop='$emit("onStart")'/>
    </div>
</template>

父组件 render 函数

render(h, { row }) {
    return h(TableActionButtons, {
        //子组件$emit传递函数
        onStart($event) {
            console.log(row.id);
        },
    });
}

没有效果,接收不了。。。

我知道2.0中是这样的,但是3.0不能这样写了

render(h, { row }) {
    return h(TableActionButtons, {
        on:{
           // 子组件$emit传递函数
           onStart($event) {
             console.log(row.id);
           },
        }
    });
}

请问一下,Vue3.0 怎样在父组件 render 中接收 onStart 方法,试了很多种方法都没用,谢谢解答!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梨涡 2022-09-20 00:48:30
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app"></div>
    <script src="https://cdn.staticfile.org/vue/3.1.5/vue.global.js"></script>
    <script>
        const Test = Vue.defineComponent({
            template: `<button @click="$emit('onStart', 'child')">emit start</button>`
        })
        Vue.createApp({
            render() {
                return Vue.h(Test, {
                    onOnStart: arg => console.log('app', arg)
                })
            }
        }).mount('#app')
    </script>
</body>
</html>
遇到 2022-09-20 00:48:30

emit的是onStart,那监听得是onOnStart。你看你改哪一头

骑趴 2022-09-20 00:48:30

父组件

<Search @searchData="searchData" :quaryParams="quaryParams"/>.

父组件的写法和vue还是一样的,只是子组件需要作一些改变

子组件

<script lang="ts">
import { defineComponent } from 'vue';
interface GetUserListParams {
    pageNum: number;
    pageSize: number;
    roleName: string;
}
export default defineComponent({
    name: 'Search',
    props: {
        quaryParams: {
            type: Object as PropType<GetUserListParams> ,
            default: () = > ({
                pageNum: 1,
                pageSize: 10,
                roleName: ''
            })
        }
    },
    emits: ['searchData'],//需要声明emits
    setup(_props, context) {
    
      const onSubmit = () => {
        context.emit('searchData', "我是子节点传递给父节点的值");
      }
      
      return {
        getData
      }
    }
});
</script>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文