it编程 > 编程语言 > Javascript

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

2人参与 2025-04-24 Javascript

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的方式

import { getcurrentinstance } from "vue";
const { proxy } = getcurrentinstance();
proxy.$router.push({ path: "/home" });  // 实现路由跳转
console.log("获取当前路由---》", proxy.$route)
import { useroute, userouter } from 'vue-router'
const router = userouter();
const route = useroute();
console.log('当前路由:', route)
router.push({ path: "/home" });

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

JavaScript使用docx-preview和mammoth预览Docx

04-24

document.form1[str] 与 document.form1.str的区别

04-24

Vue实现视频播放vue-video-player、dplayer方式

04-24

一文读懂JavaScript多线程Web Worker

04-24

vue-axios的使用以及axios请求赋值为空的问题

04-24

vue如何实现点击空白区域关闭弹窗

04-24

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论