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

vue 通过ref调用router-view子组件的方法

在这里插入图片描述

由于用的vue2.7版本,但用了vue3 setup的语法;
注意:是vue2的template结构,vue3的setup语法;非这种情况需要举一反三。

处理方案:

1、对router-view加上ref

  • template修改
    直接对router-view加上ref,
    <router-view ref="child" > </router-view>
  • script修改
  // add方法
  function add(){
    // 成功后调用子组件(此)
    proxy.$refs.child.refreshList
   }

2、子组件暴漏方法

注意:一定要用【defineExpose】暴漏给父级,否则父级看不到这个方法
script内:

function refreshList() {
}

// 暴漏给父组件
defineExpose({
 refreshList
})

其他场景的:

3、纯vue2的

应该this.$refs.child.refreshList就成,
因为子组件用的是 methods定义的

4、纯vue3的

  • 父组件template修改
<template>
  <router-view v-slot="{ Component }">
    <component ref="child" :is="Component" />
  </router-view>
</template>
  • 父组件script修改
  // add方法
  function add(){
    // 成功后调用子组件(此)
    proxy.$refs.child.refreshList
   }
  • 子组件script修改
    注意:一定要用【defineExpose】暴漏给父级,否则父级看不到这个方法
function refreshList() {
}
// 暴漏给父组件
defineExpose({
  refreshList
})

http://www.kler.cn/news/148327.html

相关文章:

  • 函数版 → 求小于给定整数的最大素数 ← Python
  • Oracle的安装及使用流程
  • Java中的mysql——面试题+答案(数据库连接池,批处理操作)——第22期
  • 每日一题(LeetCode)----哈希表--快乐数
  • Python基础:JSON保存结构化数据(详解)
  • 解决LocalDateTime传输前端为时间的数组
  • 想成为网络安全工程师该如何学习?
  • 记录:如何快捷的从一个对象中取出几个属性组成新的对象
  • HarmonyOS4.0系列——02、汉化插件、声明式开发范式ArkTS和类web开发范式
  • Cesium 展示——地球以及渲染数据导出(下载)为图片或 pdf
  • HarmonyOS简述及开发环境搭建
  • Python入职某新员工大量使用Lambda表达式,却被老员工喷是屎山
  • [Java 源码] 秋招常被问到 GC 相关的几道面试题(集中在分配以及回收)
  • C++:char* array = “Hello World“报错怎么办
  • Redis常用操作及应用(一)
  • C++学习——类和对象(上)
  • IvorySQL3.0:基于PG16.0最新内核,实现兼容Oracle数据库再升级
  • 前端css粘性布局,顶部吸附效果(position: sticky)
  • Lua判断字符串包含另一个字符串
  • python中模块的创建及引用(import as,import,from)
  • IP地址定位的误差问题及解析
  • 212. 单词搜索 II
  • react等效memo的方法
  • vue3安装eslint和prettier,最简单的步骤
  • Appium自动化测试:sdk版本和手机版本不兼容你就这样做,分分钟解决问题
  • 音视频学习(十九)——rtsp收流(tcp方式)
  • django 新建流程
  • Flask Session 登录认证模块
  • Python小技巧:探索函数调用为何加速代码执行
  • 力扣23. 合并 K 个升序链表(java,最小堆解法)