首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue3在js文件中使用全局变量。

问Vue3在js文件中使用全局变量。
EN

Stack Overflow用户
提问于 2022-10-01 10:51:32
回答 2查看 375关注 0票数 3

我在Vue3项目中定义了一些全局变量,例如:

代码语言:javascript
复制
 app.config.globalproperties.$locale = locale

然后创建可组合以动态返回全局变量:

代码语言:javascript
复制
import { getCurrentInstance ) from 'vue'
export function useGlobals(type) {
  const app = getCurrentInstance()
  const global = app.appContext.config.globalProperties[`$${type}`]
  return { global }
}

然后在vue中导入并执行可组合的组件:

代码语言:javascript
复制
import { useGlobals } from '../path'
const { global } = useGlobals('locale')

现在,可以使用全局变量。

但是,当我在js文件中导入可组合时,appContext是未定义的,就会出现问题。

我的问题是,有什么方法可以在appContext文件中获得全局变量或js?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-01 14:42:31

感谢@陶(顺便说一句)的伟大建议,不可能从应用程序获得appContext,但这给了我一个想法:)问题得到了解决。

在应用程序创建之后,我在main.js中创建了另一个具有所有全局属性的导出:

代码语言:javascript
复制
const globals = app.config.globalProperties
export { globals }

或作为一种功能(另一种@陶建议):

代码语言:javascript
复制
export const useGlobals = () => app.config.globalProperties

现在,我们可以在任何js文件中导入全局文件,并将其使用如下:

代码语言:javascript
复制
import { globals } from '../path'
globals.$locale

或从职能:

代码语言:javascript
复制
import { useGlobals } from '../path'
const { $locale } = useGlobals()
票数 1
EN

Stack Overflow用户

发布于 2022-10-01 13:27:24

您可以使用provide/inject机制,而不是创建可组合的全局道具。

查看这里的文档:https://vuejs.org/api/composition-api-dependency-injection.html#provide

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73917711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档