vue3中如何优雅地在 setup 使用 globalProperties

Posted 仰望星空的代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue3中如何优雅地在 setup 使用 globalProperties相关的知识,希望对你有一定的参考价值。

一、前言

vue3 已经发布到 v3.2.x 版了,在项目中也使用上了 vue3,总体感觉还是不错的。vue3 中使用Proxy 来实现响应式数据,解决了 vue2 中的部分性能损耗、无法监听动态添加的属性的值变化、无法监听数组元素对象的属性的值的变化问题。vue3 中的模板可以包含多个根节点、v-model 参数化等等特性也很值得肯定。还没有使用 vue3 的开发者,推荐赶快上手试用。

二、令人困惑的 globalProperties

vue3 中每个 vue 的实例都会对外暴露一个包含此应用实例的配置设置的 config 对象。在挂载应用之前,你可以修改其 property。其中的 globalProperties 是一个可以在应用的任何组件实例中访问的全局 property。组件的 property 在命名冲突具有优先权。这个属性被用来代替vue2中对Vue.prototype的扩展。

在官方文档中只是说明了使用该属性替代vue2中的Vue.prototype扩展的方式,并没有说明在组合式 API 中如何使用,在选项式 API 中直接用this调用即可。

app.config.globalPropterties.$http = () => {}

// options API 方式
export default {
    methods: {
        getList() {
            this.$http()
            ...... // 此处省略其他代码
        }
    }
}

在组合式 API 中的 setup 函数中是无法使用 this 的,this 的值为 undefined;这样就不能使用 this 直接调用 globalProperties 的属性。

 三、优雅地使用 globalProperties

官方文档中提到了一种

以上是关于vue3中如何优雅地在 setup 使用 globalProperties的主要内容,如果未能解决你的问题,请参考以下文章

如何在 vue3 中的“setup”方法中“发出”事件?

如何更优雅地在表格视图中添加/删除单元格?

如何优雅地在Redis中使用Lua

如何优雅地在 microsoft word 插入代码块

如何在 vue3 的 <script setup> 中使用 props

Vue3.2 setup语法糖总结