当前位置: 首页 > news >正文

vue3中子组件获取父组件的name,父组件不做修改动作

在 Vue 3 中,子组件若要获取父组件的 name,且父组件不做额外操作,可以借助 getCurrentInstance 来实现。getCurrentInstance 方法能获取当前组件实例,进而访问其父组件实例及其属性。
示例代码
父组件(ParentComponent.vue)

<template>
  <div>
    <h1>这是父组件</h1>
    <ChildComponent />
  </div>
</template>

<script setup>
import { defineComponent } from 'vue';
import ChildComponent from './ChildComponent.vue';

// 定义父组件名称
defineComponent({
  name: 'ParentComponent'
});
</script>

子组件(ChildComponent.vue)

<template>
  <div>
    <h2>这是子组件</h2>
    <p>父组件的名称是: {{ parentName }}</p>
  </div>
</template>

<script setup>
import { getCurrentInstance } from 'vue';

// 获取当前组件实例
const instance = getCurrentInstance();
// 获取父组件的 name
const parentName = instance?.parent?.type.__name;
</script>

代码解释
父组件:
运用 defineComponent 定义父组件,并且指定 name 为 ParentComponent。
在模板里引入并使用子组件 ChildComponent。
子组件:
借助 getCurrentInstance 获取当前组件实例。
通过 instance?.parent 访问父组件实例。
利用 instance?.parent?.type.__name 获取父组件的 name。
把获取到的父组件 name 展示在模板中。
注意事项
getCurrentInstance 仅能在 setup 函数或者 <script setup> 中使用。
由于 getCurrentInstance 可能返回 null,所以在访问父组件实例及其属性时,要使用可选链操作符 ?. 来避免出现空指针错误。
----来自豆包

相关文章:

  • JavaScript中的主要知识点
  • Windows 图形显示驱动开发-WDDM 3.2-GPU-P 设备上的实时迁移(一)
  • 【vscode】一键编译运行c/c++程序
  • 深度解析 slabtop:实时监控内核缓存的利器
  • 短分享-Flink图构建
  • python里调用外部控制台应用程序的方法~
  • 【人工智能学习之局部极小值与鞍点】
  • 测试用例详解
  • BetaFlight源码解读01
  • MacOS Big Sur 11 新机安装brew wget python3.12 exo
  • MySQL 中,SELECT ... FOR UPDATE
  • 游戏引擎学习第140天
  • 【C++】Class(1)
  • 虚拟机 | Ubuntu图形化系统: open-vm-tools安装失败以及实现文件拖放
  • 数据可视化大屏产品设计方案(附Axure源文件预览)
  • 【JavaSE-7】方法的使用
  • 【C语言】函数篇
  • 安装remixd,在VScode创建hardhat
  • 软考架构师笔记-数据库系统
  • 确认机制的分类及其区别与联系探讨
  • 俄需要达成怎样的特别军事行动结果?普京:包含四个方面
  • 新城市志|GDP万亿城市,一季度如何挑大梁
  • 一箭六星,朱雀二号改进型遥二运载火箭发射成功
  • 遭车祸罹难的村医遇“身份”难题:镇卫生院否认劳动关系,家属上诉后二审将开庭
  • 降水较常年同期少五成,安徽四大水利工程调水超11亿方应对旱情
  • 英德宣布开发射程超2000公里导弹,以防务合作加强安全、促进经济