首页 > 其他分享 >在业务逻辑中,经常会有父组件调用子组件方法的情况,vue2.0 和 vue3.0 的使用中有些不一样,在这里总结下。

在业务逻辑中,经常会有父组件调用子组件方法的情况,vue2.0 和 vue3.0 的使用中有些不一样,在这里总结下。

时间:2022-11-18 17:11:22浏览次数:51  
标签:vue const 调用 有父 vue3.0 child 组件 壁纸

在业务逻辑中,经常会有父组件调用子组件方法的情况,vue2.0 和 vue3.0 的使用中有些不一样,在这里总结下。

vue2.0 中的使用方法

父组件:

<template>
  <div @click="fatherMethod">
    <child ref="child"></child>
  </div>
</template>
<script>
  import child from '~/components/dam/child.vue';
  export default {
    components: {
      child
    },
    methods: {
      fatherMethod() {this.$refs.child.childMethods();
      }
    }
  };
</script>

子组件

<template>
  <div>{{name}}</div>
</template>
<script>
  export default {
    data() {
      return {
        name: '测试'
      };
    },
    methods: {
      childMethods() {
        console.log(this.name);
      }
    }
  };
</script>

在父组件中, this.$refs.child 返回的是一个vue实例,可以直接调用这个实例的方法

vue3.0 中和 2.0 的使用是有差异的

子组件, 该子组件是使用ant-design-ui 做的一个对话框

<template>
  <a-modal v-model:visible="visible" :title="title" :width="width">
    <template #footer>
      <a-button key="back" @click="handleCancel">取消</a-button>
      <a-button key="submit" type="primary" @click="handleOk">确定</a-button>
    </template>
    <slot></slot>
  </a-modal>
</template>
<script setup>
    import {  ref } from 'vue';
    const props = defineProps({
      title: {type: String},
      width: {type: String , default: '500px'}
    })
    let visible = ref(false)
    const openModal = () => {
      visible.value = true
    }
    const handleCancel = () => {
      visible.value = false
    }
    const emit = defineEmits(['closeModal'])
    const handleOk = () => {
      visible.value = false
      emit('closeModal')
    }
    defineExpose ({
      openModal
    })
</script>

父组件 是在其他组件中调用该对话框

<template>
<vModal
    ref="lookModal"
    width="600px"
    title="查看"
  >
    <div>对话框内容</div>
  </vModal>
</template>
<script setup>
import vModal from '@/components/modal/index.vue'
import {ref,reactive,computed,toRaw, watch} from 'vue'
  const lookModal = ref()
  const LookModol = (row) => {
    lookModal.value.openModal()
  }
</script>

在父组件中调用 LookModol 就可以调用子组件的方法, 这里需要注意的是 使用 语法糖的写法时, 需要将子组件中需要父组件调用的方法 通过defineExpose 暴露出来

后面的文章,会接着介绍 项目其他相关内容, 欢迎点赞加关注

这里介绍下本人做的头像,壁纸小程序,欢迎大家体验,
热门头像|个性头像|高清头像|性感壁纸|美女壁纸|炫酷壁纸|省电壁纸|唯美壁纸

标签:vue,const,调用,有父,vue3.0,child,组件,壁纸
From: https://www.cnblogs.com/eyesstar/p/16903883.html

相关文章

  • Vue3 企业级优雅实战 - 组件库框架 - 7 组件库文档的开发和构建
    该系列已更新文章:分享一个实用的vite+vue3组件库脚手架工具,提升开发效率开箱即用yyg-cli脚手架:快速创建vue3组件库和vue3全家桶项目Vue3企业级优雅实战-组......
  • 13.django-admin组件
    Django内置了一个强大的组件叫Admin,提供给网站管理员快速开发运营后台的管理站点,下面通过案例进行操作1.创建模型类模型类如下:fromdjango.dbimportmodels#Crea......
  • 如何正确学习vue3.0源码
    为什么要学源码技术是第一生产力学习API的设计目的、思路、取舍学习优秀的代码风格学习组织代码的方式学习实现方法的技巧学习ES67新API、TS高级用法不给自......
  • 【快应用】父组件中如何设置子组件样式
    问题背景:子组件被引用时,如果在父组件的布局效果不理想,需要去修改子组件对应的样式,是比较麻烦的,现在快应用在1100版本之后推出了externalClasses属性,可以将外部样式直接传给......
  • React组件生命周期
     组件的生命周期  挂载:--------------- ......
  • 四招教你样式化界面组件KendoReact,让应用程序主题更个性化
    KendoUI致力于新的开发,来满足不断变化的需求,通过React框架的KendoUIJavaScript封装来支持ReactJavascript框架。KendoUIforReact能够为客户提供更好的用户体验,并且......
  • Android 服务组件
    定义服务是Android中实现程序后台运行的解决方案,不和用户交互而且要求长期运行的任务。多线程编程1.线程基本用法//继承Thread类classMyThreadextendsThread{......
  • vue elementui Switch组件添加开关样式
      /deep/.el-switch{   &::before{    content:'开';    display:none;    color:#fff;    z-index:1;  ......
  • vue组件通信6种方式总结(常问知识点)
    前言在Vue组件库开发过程中,Vue组件之间的通信一直是一个重要的话题,虽然官方推出的Vuex状态管理方案可以很好的解决组件之间的通信问题,但是在组件库内部使用Vuex往往会......
  • vue中兄弟组件方法互相调用 子组件调用子组件内的方法
    使用this.$refs方法,如果直接用无法调取到可以先打印出来看一下结构有时候需要加[0],如下:  两个子组件:<ads-banner-voteref="bannerVote"@openVote="openVote"/>/......