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

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

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 方法,试了很多种方法都没用,谢谢解答!


回答:

<!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>


回答:

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


回答:

父组件

<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>

以上是 Vue3 中 render函数中怎么接收子组件$emit发送的事件 的全部内容, 来源链接: utcz.com/p/935820.html

回到顶部