vue3父子组件相互调用方法(setup)
vue
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
项目地址:https://gitcode.com/gh_mirrors/vu/vue
免费下载资源
·
一、父组件调用子组件方法
子组件需要使用defineExpose对外暴露方法,父组件才可以调用!
1.父组件
<template>
<button @click="getChild">触发子组件方法</button>
<!-- 一:定义 ref -->
<Child ref="childRef"></Child>
</template>
<script lang="ts" setup>
import { ref } from 'vue';
import Child from '../../components/child.vue';
// 二:定义与 ref 同名变量
const childRef = ref <any> ()
// 三、函数
const getChild = () => {
// 调用子组件的方法或者变量,通过value
childRef.value.hello("hello world!");
}
</script>
2.子组件
<template>
<div>我是子组件</div>
</template>
<script lang="ts" setup>
// 第一步:定义子组件的方法
const hello = (str: string) => {
console.log('子组件的hello方法执行了--' + str)
}
// 第二部:暴露方法
defineExpose({
hello
})
</script>
二、子组件调用父组件方法
1.父组件
<template>
<Child @sayHello="handle"></Child>
</template>
<script lang="ts" setup>
import Child from '../../components/child.vue';
const handle = () => {
console.log('子组件调用了父组件的方法')
}
</script>
2.子组件
<template>
<view>我是子组件</view>
<button @click="say">调用父组件的方法</button>
</template>
<script lang="ts" setup>
const emit = defineEmits(["sayHello"])
const say = () => {
emit('sayHello')
}
</script>
GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5
* chore: fix link broken
Signed-off-by: snoppy <michaleli@foxmail.com>
* Update packages/template-compiler/README.md [skip ci]
---------
Signed-off-by: snoppy <michaleli@foxmail.com>
Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891
Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
更多推荐
已为社区贡献2条内容
所有评论(0)