Vue3中getCurrentInstance、页面中route和router的获取实现方式

 更新时间:2025年04月18日 10:31:10   作者:熬夜胡萝北  
这篇文章主要介绍了Vue3中getCurrentInstance、页面中route和router的获取实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

getCurrentInstance、页面中route和router的获取方式

getCurrentInstance()

在vue2中,可以通过this来获取组件实例,但是在vue3的setup函数中,无法通过this获取到组件实例,在setup函数中this的值是undefined,但是vue3提供了getCurrentInstance()来获取组件的实例对象;

    const { ctx,proxy } = getCurrentInstance();
    console.log(typeof getCurrentInstance);
    console.log(getCurrentInstance(), typeof getCurrentInstance());
    console.log(proxy, typeof proxy);
    console.log(ctx, typeof ctx);

输出结果:

可以看出,getCurrentInstance是一个方法,getCurrentInstance()是一个对象,ctx和proxy也是一个对象,ctx和proxy是getCurrentInstance()对象中的一个属性,通过解构赋值的方式拿到的,ctx是一个普通的对象,而proxy是一个proxy对象,两者里面都可以看到当前组件的data值和方法,可以使用proxy[属性名]去获取实例对象中的数据或者调用对象中的方法;

getCurrentInstance只能在setup函数或生命周期钩子函数中使用;

ctx对象和proxy对象的区别:

1、从getCurrentInstance方法中解构出来的ctx对象,只能在开发环境下使用,生产环境下ctx将访问不到(不推荐使用)

2、proxy对象在开发环境以及生产环境中都能拿到组件实例对象(推荐使用)

获取组件实例对象的方式

1、获取挂载到全局中的方法

const instance = getCurrentInstance()
console.log(instance.appContext.config.globalProperties)

2、利用proxy对象

const { proxy } = getCurrentInstance()  

获取route和router的方式

  • 方法一:通过getCurrentInstance()方法获取到组件实例,从而获取到route和router
import { getCurrentInstance } from "vue";
const { proxy } = getCurrentInstance();
proxy.$router.push({ path: "/home" });  // 实现路由跳转
console.log("获取当前路由---》", proxy.$route)
  • 方法二:通过从vur-router中引入useRoute()、useRouter()方法来获取到route和router
import { useRoute, useRouter } from 'vue-router'
const router = useRouter();
const route = useRoute();
console.log('当前路由:', route)
router.push({ path: "/home" });

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue2移动端+swiper实现异形的slide方式

    vue2移动端+swiper实现异形的slide方式

    这篇文章主要介绍了vue2移动端+swiper实现异形的slide方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Vue页面生成PDF的最佳方法推荐

    Vue页面生成PDF的最佳方法推荐

    公众中经常会有这种场景,一些合同、协议等的页面需要进行下载,而且需要和页面保持一致,下面这篇文章主要给大家介绍了关于Vue页面生成PDF的最佳方法,需要的朋友可以参考下
    2022-05-05
  • 解决vue动态路由异步加载import组件,加载不到module的问题

    解决vue动态路由异步加载import组件,加载不到module的问题

    这篇文章主要介绍了解决vue动态路由异步加载import组件,加载不到module的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • vue自定义组件如何添加使用原生事件

    vue自定义组件如何添加使用原生事件

    这篇文章主要介绍了vue自定义组件如何添加使用原生事件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • vue触发真实的点击事件跟用户行为一致问题

    vue触发真实的点击事件跟用户行为一致问题

    这篇文章主要介绍了vue触发真实的点击事件跟用户行为一致问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Vue组件间传值的实现解析

    Vue组件间传值的实现解析

    组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用,这篇文章主要介绍了Vue组件间传值的实现
    2022-09-09
  • vue自定义指令之面板拖拽的实现

    vue自定义指令之面板拖拽的实现

    这篇文章主要介绍了vue自定义指令之面板拖拽的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Vue组件间的双向绑定示例解析

    Vue组件间的双向绑定示例解析

    这篇文章主要介绍了Vue组件间的双向绑定,我们都知道当父组件改变了某个值后,如果这个值传给了子组件,那么子组件也会自动跟着改变,但是这是单向的,使用v-bind的方式,即子组件可以使用父组件的值,但是不能改变这个值
    2023-03-03
  • 基于Vue.js的表格分页组件

    基于Vue.js的表格分页组件

    这篇文章主要为大家详细介绍了基于Vue.js的表格分页组件使用方法,了解了Vue.js的特点,感兴趣的朋友可以参考一下
    2016-05-05
  • vitejs预构建理解及流程解析

    vitejs预构建理解及流程解析

    这篇文章主要为大家介绍了vitejs预构建理解及流程解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07

最新评论