vue3中如何优雅地在setup使用globalproperties(代码片段)

仰望星空的代码 仰望星空的代码     2023-01-04     666

关键词:

一、前言

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”方法中“发出”事件?

】如何在vue3中的“setup”方法中“发出”事件?【英文标题】:Howto`emit`eventoutof`setup`methodinvue3?【发布时间】:2021-04-1513:16:26【问题描述】:我知道我可以从setup方法调用emit方法,但是有没有办法从任何其他函数发出事件而不从s... 查看详情

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

】如何在vue3的<scriptsetup>中使用props【英文标题】:Howtousepropsin<scriptsetup>invue3【发布时间】:2021-05-2815:01:42【问题描述】:喜欢标题,关于链接:Newscriptsetup(withoutrefsugar)<template><TopNavbartitle="room"/><div>no</ 查看详情

如何优雅地在microsoftword插入代码块

 如何优雅地在microsoftword插入代码块标签: 插入代码优雅microsoftword文档如何优雅地在microsoftword插入代码块此步骤适用于文档中需要插入代码或者某些特定的段落1.选择菜单表格2.选择1*1表格650)this.width=650;"src="http://img.blog.... 查看详情

vue3.2setup语法糖总结(代码片段)

...turn,template便可直接使用,非常的香啊!一、如何使用setup语法糖只需在script标 查看详情

vue3.2setup语法糖总结(代码片段)

...turn,template便可直接使用,非常的香啊!一、如何使用setup语法糖只需在script标 查看详情

如何优雅地在latex中使用中文?

中文支持方案只是宏包的问题啊,例如常见的cjk/xecjk即可.你想问的是不是"不用ctex那种巨型套装,而用最简洁的方式编译包括中文的文档."这可以用miktex-portable(159M)+cjk.xecjk即可.它自带的编辑器是texworks,也许开始用着不习惯,但是关... 查看详情

如何使用 Typescript 在 Vue 3.0 setup() 函数中使用 async/await

】如何使用Typescript在Vue3.0setup()函数中使用async/await【英文标题】:HowcanIuseasync/awaitintheVue3.0setup()functionusingTypescript【发布时间】:2021-01-1422:01:39【问题描述】:(这个问题已经回答了JavaScript,见下文,但这个问题是针对TypeScript... 查看详情

vue3setup中使用生命周期函数(代码片段)

...绍setup是组合CompositionAPI中的入口函数,也是第一个要使用的函数。setup只在初始化时执行一次,所有的CompositionAPI函数都在此使用。CompositionAPI代码组织很灵活,代码直接全部都写在setup里面即可(简单点来说,... 查看详情

如何最好地在 Access 或 Excel 中使用 VBA 来测试 ODBC 连接?

】如何最好地在Access或Excel中使用VBA来测试ODBC连接?【英文标题】:HowcanIbestuseVBAinAccessorExceltotestanODBCconnection?【发布时间】:2009-03-1021:37:59【问题描述】:给定一个预配置的ODBC系统DSN,我想编写一个函数,使用VBA优雅地测试该... 查看详情

vue3.2setup语法糖总结(代码片段)

...turn,template便可直接使用,非常的香啊!一、如何使用setup语法糖只需在script标签上写上setup代码如下(示例):<template></template><scriptsetup></script><stylescopedlang="less"></style>... 查看详情

vue3中ref的使用

...m'].validate,但是在vue3的setup中是没有办法直接使用this,如何进行解决?需要注意的是,ref前面是没有:,而ref是一个变量的,这个是有些反直觉的。需要注意的是getCurrentInstance是有使用的限制的,如果是直接在方法中书写是直接... 查看详情

优雅地在列表中查找子列表

】优雅地在列表中查找子列表【英文标题】:elegantfindsub-listinlist【发布时间】:2012-04-2319:33:23【问题描述】:给定一个列表,其中包含一个被噪声包围的已知模式,是否有一种优雅的方法可以获取与该模式相同的所有项目。下... 查看详情

关于vue3setup语法糖(代码片段)

...rops被解析之后执行,是组合式API的入口在setup中应该避免使用this,因为它不会找到示例。setup的调用发生在dataproperty,computedproperty或methods被解析之前,所以它们无法在setup中被获取setup是一个接收props和context的函数,setup返回的... 查看详情

Vue 3:resolveComponent 只能在 render() 或 setup() 中使用

】Vue3:resolveComponent只能在render()或setup()中使用【英文标题】:Vue3:resolveComponentcanonlybeusedinrender()orsetup()【发布时间】:2021-01-2116:39:14【问题描述】:我正在尝试在Vue3中渲染模板。模板包含一个组件,该组件在实例上本地注册。i... 查看详情

vue3中<scriptsetup>和setup函数的区别(代码片段)

目录一、基本语法二、定义变量三、使用外部文件方法四、注册组件五、使用自定义指令六、父传子七、子传父 八、defineExpose 九、useSlots() 和 useAttrs()十、与普通的 script一起使用十一、顶层 await十二、限制官网:<scrip... 查看详情

vue3中<scriptsetup>和setup函数的区别(代码片段)

目录一、基本语法二、定义变量三、使用外部文件方法四、注册组件五、使用自定义指令六、父传子七、子传父 八、defineExpose 九、useSlots() 和 useAttrs()十、与普通的 script一起使用十一、顶层 await十二、限制官网:<scrip... 查看详情

vue3中使用setup监听props

...可能会改变的属性,一一监听过于麻烦。所以改变思路,使用监听props来获取所有所有传参。在父组件中,用于传递给子组件的参数必须为响应式(eg.reactive),否则子组件在监听时不会监测到变换,watch永远不会生效immediate是立即... 查看详情

如何在 Vue3 中使用数组访问反应对象内的数据?

】如何在Vue3中使用数组访问反应对象内的数据?【英文标题】:HowdoIaccessdatainsideareactiveobjectwithanarrayinVue3?【发布时间】:2021-11-1003:30:22【问题描述】:我很难访问测试属性中的值。当我执行current.room.test时,我得到“Proxy:…,:…... 查看详情