shu*_*hen 7 typescript vue.js vue-component vue-render-function vuejs3
我想调用父文件中的子组件方法,并且子组件是由渲染函数创建的。下面是我的代码
孩子.ts
export default {
setup(props) {
//...
const getCropper = () => {
return cropper
}
return () =>
// render function
h('div', { style: props.containerStyle }, [
])
}
Run Code Online (Sandbox Code Playgroud)
父.ts
<template>
<child-node ref="child"></child-node>
</template>
<script>
export default defineComponent({
setup(){
const child =ref(null)
// call child method
child.value?.getCropper()
return { child }
}
})
</script>
Run Code Online (Sandbox Code Playgroud)
可以使用 来扩展组件实例,这对于返回值已经是 render 函数的expose情况很有用:setup
type ChildPublicInstance = { getCropper(): void }
...
setup(props: {}, context: SetupContext) {
...
const instance: ChildPublicInstance = { getCropper };
context.expose(instance);
return () => ...
}
Run Code Online (Sandbox Code Playgroud)
暴露的实例expose是类型不安全的,需要手动输入,例如:
const child = ref<ComponentPublicInstance<{}, ChildPublicInstance>>();
child.value?.getCropper()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6927 次 |
| 最近记录: |