tnblog
首页
视频
资源
登录
什么时候才能领悟,取之越多失之越多
排名
5
文章
229
粉丝
15
评论
7
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

vue3父组件调用子组件方法。vue3父子组件方法调用

4289人阅读 2023/7/22 10:02 总访问:1165819 评论:0 收藏:1 手机
分类: 前端

vue3父组件调用子组件的方法是通过expose和ref来实现的,我们可以通过expose来控制父组件可以访问子组件那些的方法和对象,我们将通过setup api(组合式 api)和option api(选项式 api)来演示父组件如何调用子组件的方法。

组合式API

父组件通过ref定义子组件实例,通过调用实例获得子组件的数据和方法

  1. <!-- 父组件 app.vue -->
  2. <template>
  3. <div class="itxst">
  4. <!-- 使用 ref 指令关联子组件 -->
  5. <child ref="childComp"/>
  6. <button @click="onTry">点击试一试</button>
  7. </div>
  8. </template>
  9. <script setup>
  10. import { reactive, ref } from "vue";
  11. import child from "./child.vue";
  12. //定义子组件实例,名称要和上面的ref相同
  13. const childComp = ref(null);
  14. //访问demo组件的方法或对象
  15. const onTry = () => {
  16. //获取到子组件的 title 数据
  17. let msg = childComp.value.state.title;
  18. //调用子组件的 play方法
  19. childComp.value.play();
  20. };
  21. </script>

子组件通过defineExpose暴露对象和方法

  1. <!--子组件名称 child.vue -->
  2. <template>
  3. <div class="itxst">
  4. {{ state.title }}
  5. </div>
  6. </template>
  7. <script setup>
  8. import { ref, reactive } from "vue";
  9. //定义一个变量
  10. const state = reactive({
  11. title: "www.itxst.com",
  12. });
  13. //定义一个方法
  14. const play = () => {
  15. state.title = "你调用了子组件的方法";
  16. };
  17. //暴露state和play方法
  18. defineExpose({
  19. state,
  20. play,
  21. });
  22. </script>

选项式API

父组件:

  1. <!-- 父组件 app.vue -->
  2. <template>
  3. <div class="itxst">
  4. <!-- 使用 ref 命令 -->
  5. <child ref="childComp"/>
  6. <button @click="onClick">点击试一试</button>
  7. </div>
  8. </template>
  9. <script >
  10. import child from "./child.vue";
  11. export default {
  12. name: "app",
  13. //注册组件
  14. components: {
  15. child,
  16. },
  17. methods: {
  18. onClick: function () {
  19. //获取到 子组件的 数据
  20. let msg = this.$refs.childComp.message;
  21. //执行了子组件的 play方法
  22. this.$refs.childComp.play();
  23. },
  24. },
  25. };
  26. </script>

子组件:

  1. <!-- 子组件 child.vue -->
  2. <template>
  3. <div class="itxst">
  4. {{ title }}
  5. </div>
  6. </template>
  7. <script>
  8. //选项式默认当前实例是全部暴露
  9. export default {
  10. name: "demo",
  11. //默认全部暴露 也可以通过expose控制那些需要暴露
  12. //expose: ['play'],
  13. data() {
  14. return {
  15. title: "www.itxst.com",
  16. };
  17. },
  18. methods: {
  19. play: function () {
  20. this.title = "你调用了子组件的方法";
  21. },
  22. },
  23. };
  24. </script>

原文:https://blog.csdn.net/weixin_42252416/article/details/128001894


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

vue3,vue组件,props给一个对象参数。vue组件间传参数vue父组件给子组件传参数。组件参数类型。父组件调用子组件的方法。vue组件事件监听,给子组件传递方法,子组件调用父组件方法

[TOC]组件可以使用props给组件传值,可以同时传递多个,可以是任意类型,比如字符串或者对象。 下面是个简单的例子: &lt...

vue3最基础的数据加载,表格table

vue3表格加载一点静态数据 &lt;template&gt; &lt;el-table :data=&quot;tableData&quot; style=&quot;width: 100%&quot...

vue3 Element Plus 表单输入框放到一行

当垂直方向空间受限且表单较简单时,可以在一行内放置表单。 通过设置 inline 属性为 true 可以让表单域变为行内的表单域...

vue3 Element ui Plus 表格 分页,vue3 el-pagination分页

其实就是el-pagination控件的使用而已 &lt;template&gt; &lt;div&gt; &lt;el-table :data=&quot;tableData&quot; ...

vue触发a标签的点击事件。vue3 dom操作 触发点击事件 。文件选择库只会触发一次change事件的问题

[TOC]vue触发a标签的点击事件直接操作dom节点的方式比较简单 &lt;button @click=&quot;handleBtnClick&quot;&gt;点击按钮&...

vue3 ref的使用多个ref的使用。通过ref触发点击事件

多个ref获取的方法可以使用一样的,通过变量名来区分就行了 const vabUploadRef = ref() const multipleTableRef = ref() ...

vue elementui,vue3 element plus 文件上传的时候设置其他参数。后台.net接收传递的额外参数。图片上传

比如上传文件的时候额外传递两个select选择的值 前台前面上传文件的时候要提供默认参数很简单,el-upload绑定一个data即可...

vue,vue3 打开新页面,页面跳转。vue跳转到一个新页面。vue路由传参,vue3路由传参,vue3 获取路由参数

[TOC]VUE页面跳转本地页面跳转 goApplicationCenter() { //进行页面跳转 let path = &quot;/application-center&quo...

vuevue3组件封装,vue组件模板。简单组件模板。基础组件模板。vue引入自定义的组件。vue使用自定义的组件。插槽slot使用。vue封装格子效果,一块一块的grid布局效果

[TOC]vue封装组件的简单模板贴一个简单模板方便自定义组件的时候直接复制 &lt;template&gt; &lt;div class=&quot;app...

.net6 Signalr+vue3 的运用(上)

.net6 Signalr+Vue3 的运用(上)[TOC] 什么是 SignalR?ASP.NET Core SignalR 是一个开放源代码库,可用于简化向应用添加...

.net6 Signalr+vue3 的运用(下)

.net6 Signalr+Vue3 的运用(下)[TOC] 上篇链接:https://www.tnblog.net/hb/article/details/7961SignalR 中的用户 Sig...

.net6 Signalr+vue3 配合Ingress Nginx的运用

.net6 Signalr+Vue3 配合Ingress Nginx的运用[TOC] 结合上篇:https://www.tnblog.net/hb/article/details/7963 项目打...

vue3 Element Plus 表格使用vue3常用界面搭配。vue3基础模板使用

一个简单的表格加时间搜索界面效果如下: 代码如下: &lt;template&gt; &lt;div class=&quot;app-container&quot;&g...

vue3 如何加prototype。vue3使用globalProperties

在2.X版本中创建一个vue 实例是通过 new Vue()来实现的,到了3.X中则是通过使用createApp这个 API返回一个应用实例,并且可...
借君三十年,繁花万里好江山。