Vue3 子路由vue怎样调用父路由vue中的方法?

[复制链接]
发表于 2025-12-17 04:08:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
1.  router -> index.ts 文件:
  1. import { createRouter, createWebHistory } from 'vue-router'
  2. import DefaultView from '@/views/default/index.vue'
  3. import ParentView from '@/views/parent/index.vue'
  4. import ChildView from '@/views/child/index.vue'
  5. const router = createRouter({
  6.   history: createWebHistory(import.meta.env.BASE_URL),
  7.   routes: [
  8.     {
  9.       path: '/',
  10.       name: 'Default',
  11.       component: DefaultView
  12.     },
  13.     {
  14.       path: '/parent',
  15.       name: 'parent',
  16.       component: ParentView,
  17.       children: [
  18.         {
  19.           path: 'child',
  20.           name: 'child',
  21.           component: ChildView
  22.         }
  23.       ]
  24.     }
  25.   ]
  26. })
  27. export default router
复制代码
2、父路由 ParentView 对应的 index.vue 界面
  1. <template>
  2.   <div>
  3.     <span>父路由界面</span>
  4.    <!-- 下面 route-view 是子路由承载标签 -->
  5.     <router-view></router-view>
  6.   </div>
  7. </template>
  8. <script setup lang="ts">
  9. import { onMounted, provide } from 'vue'
  10. //使用 provide 方法向子路由公开 CallParent 方法
  11. provide('CallParent', (data: any) => {
  12.       console.log('成功调用了父路由方法');
  13. })
  14. onMounted(() => {
  15.      //父路由界面元素加载完毕
  16. })
  17. </script>
复制代码
3、子路由 ChildView 对应的 index.vue 界面
  1. <template>
  2.   <div>
  3.     <span>子路由界面</span>
  4.   </div>
  5. </template>
  6. <script setup lang="ts">
  7. import { onMounted, inject } from 'vue'
  8. //使用 inject 获取到父路由公开 CallParent 方法
  9. let parentMethod: (data: any) => {} = inject('CallParent')
  10. onMounted(() => {
  11.      //调用父路由中的方法
  12.      parentMethod('hello world!')
  13. })
  14. </script>
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表