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

 app.config.globalproperties.$locale = locale

然后创建Composable以动态返回全局变量:

import { getCurrentInstance ) from 'vue'
export function useGlobals(type) {
  const app = getCurrentInstance()
  const global = app.appContext.config.globalProperties[`$${type}`]
  return { global }
}

然后在VUE中,可组合的组件被导入并执行:

import { useGlobals } from '../path'
const { global } = useGlobals('locale')

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

但当我在js个文件中导入Composable时出现了问题,那里的appContext是未定义的.

我的问题是,有没有办法在js个文件中获得全局变量或appContext

推荐答案

多亏了@taao(顺便说一句,不可能从APP上获得appContext,但这给了我一个 idea :)的伟大建议,问题得到了解决.

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

const globals = app.config.globalProperties
export { globals }

或者作为一个函数(另一个@道建议):

export const useAppConfig = () => app.config

现在,我们可以在任何js个文件中导入全局变量,并按如下方式使用:

import { globals } from '../path'
globals.$locale

或从函数:

import { useAppConfig } from '../path'
const { globalProperties } = useAppConfig()
globalProperties.$locale

Javascript相关问答推荐

Phaser框架-将子对象附加到Actor

Redux工具包查询(RTKQ)端点无效并重新验证多次触发

将状态向下传递给映射的子元素

Phaser 3 console. log()特定游戏角色的瓷砖属性

我可以从React中的出口从主布局调用一个处理程序函数吗?

单击ImageListItemBar的IconButton后,在Material—UI对话框中显示图像

切换时排序对象数组,切换不起作用

将本机导航路由react 到导航栏中未列出的屏幕?

加载背景图像时同步旋转不显示的问题

使用Promise.All并发解决时,每个promise 的线性时间增加?

编辑文本无响应.onClick(扩展脚本)

类构造函数不能在没有用With Router包装的情况下调用

为什么这个.add.group({})在教程中运行得很好,但在我的游戏中就不行了?

按下单键和多值

构建器模式与参数对象输入

Played link-Initialize.js永远显示加载符号

如何为两条动态路由创建一个页面?

Oracle APEX-如何调用Java脚本函数

This.forceUPDATE并通过Reaction-Router-DOM链接组件传递状态

有没有一种方法可以在不定义任何属性的情况下使用CSS转换?