回顾Vue2中声明全局方法
vue2中使用Vue.prototype.$methodName
来声明全局方法:
Vue.prototype.$methodName = method;
在其他的vue页面中,通过访问this对象来访问到上述声明的全局方法:
this.$methodName.xxx()
https://blog.csdn.net/weixin_43579154/article/details/123153373
Vue3声明全局方法(不推荐)
在Vue3中,我们无法在setup()中访问到this,使用 app.config.globalProperties
方法来挂载全局变量:
const app = createApp(App);
app.config.globalProperties.$xxxx = xxxxx;
在其他的vue3页面中调用:
<script setup>
import { ref, getCurrentInstance } from 'vue';
// proxy相当于 vue2的this,从getCurrentInstance 实例中获取,proxy对象
const { proxy } = getCurrentInstance();
const method = () => {
proxy.$xxxx.xxx()
}
</script>
这种方法是vue内部接口,不推荐使用原因:Why getCurrentInstance is descriped as anti pattern in application code? #1422
vue3组合式函数注入依赖写法
上面提到使用getCurrentInstance
的方法并不推荐,这里介绍尤雨溪推荐的vue-router写法:
首先依赖文件中使用export暴露api:
export function useRouter(): Router {
return inject(routerKey)! // 返回需要注入的依赖对象
}
其他页面调用:
import { useRouter } from 'vue-router';
const router = useRouter()
此处评论已关闭