Vue3 子/父组件相互调用

简介: Vue3 子/父组件相互调用

1:子组件调用父组件

父组件:

<template>
  <div>
    <button style="margin: 50px">父按钮</button>
<!--已clk为名称的事件传递给子组件,传递的是父组件的a函数/事件 -->
    <Child @clk="a" />
  </div>
</template>
<script setup>
//引用父组件
import Child from "@/components/Child.vue";
const a = () => {
  console.log(111);
};
</script>
<style>
* {
  padding: 0;
  margin: 0;
}
</style>

子组件:

<template>
  <div>
<!-- 调用子组件的方法去触发父组件传递过来的方法-->
    <button style="margin: 50px" @click="as">子按钮</button>
  </div>
</template>
<script setup>
// 接受传递过来的自定义事件名称  :clk
// 这里使用的是vue3的defineEmits事件,不知道的可以去官网看下
// 命名为emit主要是为了便于分辨和调用
let emit = defineEmits(["clk"]);
// 子组件自身的调用事件以此来触发父组件的事件
const as = () => {
// 使用emit传递clk方法,让父组件接收并调用
  emit("clk");
};
</script>
<style>
* {
  padding: 0;
  margin: 0;
}
</style>

效果:

子组件调用父组件

2:父组件调用子组件

父组件:

<template>
  <div>
    <button style="margin: 50px" @click="aa">父按钮</button>
<!-- 使用ref获取到子组件的信息 -->
    <Child ref="zi" />
  </div>
</template>
<script setup>
import Child from "@/components/Child.vue";
import { ref } from "vue";
// 声明ref来获取子组件信息
const zi = ref();
// 通过ref.value.方法/事件 来调用事件
const aa = () => {
  zi.value.as();
};
</script>
<style>
* {
  padding: 0;
  margin: 0;
}
</style>

子组件:

<template>
  <div>
    <button style="margin: 50px">子按钮</button>
  </div>
</template>
<script setup>
// 被父组件调用的方法/事件
const as = () => {
  console.log(111);
};
// 关键处:需要利用defineExpose将事件给暴露出去让父组件进行调用
defineExpose({
  as,
});
</script>
<style>
* {
  padding: 0;
  margin: 0;
}
</style>

效果:

父组件调用子组件效果

相关文章
|
6天前
|
JSON 数据可视化 数据库
vue3+threejs+koa可视化项目——实现登录注册(第三步)
vue3+threejs+koa可视化项目——实现登录注册(第三步)
28 5
|
6天前
|
数据可视化 前端开发 JavaScript
vue3+threejs可视化项目——引入threejs加载钢铁侠模型(第二步)
vue3+threejs可视化项目——引入threejs加载钢铁侠模型(第二步)
44 3
|
6天前
|
JavaScript 数据可视化 算法
vue3+threejs可视化项目——搭建vue3+ts+antd路由布局(第一步)
vue3+threejs可视化项目——搭建vue3+ts+antd路由布局(第一步)
28 6
|
3天前
|
JavaScript
Vue3中props的原理与使用
Vue3中props的原理与使用
|
3天前
|
JavaScript 前端开发 IDE
|
4天前
|
缓存 JavaScript 前端开发
Vue2与Vue3:深度剖析核心差异与升级亮点
随着Vue.js框架的不断演进,Vue2与Vue3作为两个重要版本,各自承载了特定时期的前端开发理念和技术实践。本文将全面探讨Vue2与Vue3之间的核心区别,旨在帮助开发者理解两者在设计思路、性能优化、API结构、生命周期管理等方面的显著差异,以便更好地选择和迁移至适合项目的框架版本。
19 2
|
4天前
|
JavaScript 前端开发 API
Vue 3的响应式系统相比Vue 2有哪些改进?
Vue 3 响应式系统升级亮点:使用 Proxy 替换 `Object.defineProperty`,实现更细粒度的变更跟踪与高性能;自动追踪嵌套属性,无需 `$set` 或深度监听;支持懒响应式,提升初始化性能;改进数组响应式,直接使用原生数组方法;递归侦听器增强灵活性;静态属性追踪;自定义响应式容器;统一 `ref` 和 `reactive` API;引入 `toRefs` 函数;优化响应式 API,如 `markRaw`, `shallowRef` 等,大幅提升效率和开发体验。
|
4天前
|
JavaScript 算法 前端开发
vue3和vue2得区别
Vue 3 优化了性能,引入了更快的虚拟 DOM 算法和模块化编译,提升渲染速度并减小打包文件大小。新引入的 Composition API 提高代码组织灵活性和可维护性。Vue 3 加强了 TypeScript 支持,改进响应式系统,使用 Proxy 实现更细粒度变化跟踪。此外,包体积更小,加载速度更快。尽管与 Vue 2 存在迁移成本,官方提供迁移指南和工具以协助平滑过渡。Vue 3 旨在提供更好的开发体验和效率。
|
6天前
|
JSON 数据可视化 前端开发
vue3+threejs+koa可视化项目——模型文件上传(第四步)
vue3+threejs+koa可视化项目——模型文件上传(第四步)
15 7
|
6天前
|
JavaScript 测试技术 开发者
Vue 3 Vuex:构建更强大的状态管理系统
Vue 3 Vuex:构建更强大的状态管理系统
15 1