vue3中定义全局变量

阅读数:23 评论数:0

跳转到新版页面

分类

html/css/js

正文

方式一、使用provide/inject

如果你想在多个组件之间共享变量,你可以使用 provide 和 inject API。在父组件中使用 provide 来定义一个可以被子组件注入的变量,然后在子组件中使用 inject 来接收这个变量。

父组件

import { provide } from 'vue';

setup() {
  const globalValue = ref('some value');
  provide('globalValueKey', globalValue);
}

子组件

import { inject } from 'vue';

setup() {
  const globalValue = inject('globalValueKey');
  return { globalValue };
}

方式二、使用全局状态管理(如Vuex)

如果你的应用程序很大,可能需要一个全局状态管理库,例如 Vuex。你可以在 Vuex store 中定义全局状态,然后在任何组件的 setup 函数中通过 useStore 钩子访问这些状态。

import { useStore } from 'vuex';

setup() {
  const store = useStore();
  const globalValue = computed(() => store.state.someGlobalValue);
  return { globalValue };
}

方式三、使用全局属性

你可以在 Vue 应用实例上定义全局属性,然后在 setup 函数中通过 getCurrentInstance API 访问这些属性。

在创建 Vue 应用时:

const app = createApp(App);
app.config.globalProperties.$myGlobal = 'some value';

在组件的 setup 函数中:

import { getCurrentInstance } from 'vue';

setup() {
  const instance = getCurrentInstance();
  const globalValue = instance?.appContext.config.globalProperties.$myGlobal;
  return { globalValue };
}

方式四、使用响应式引用

如果你只是想在一个组件内部的多个 setup 函数调用之间共享变量(虽然这种情况不常见),你可以定义一个响应式引用并将其导出。

import { ref } from 'vue';

// 定义在模块作用域中
const globalValue = ref('some value');

// 导出以便在其他地方使用
export { globalValue };

// 在 setup 中使用
setup() {
  return { globalValue };
}



相关推荐

一、生命周期 1、vue2生命周期 beforeCreate #实例初始化之后,进行数据侦听和事件/侦听器的配置之前同步调用 created #实例创建完成后被立即同步调用 beforeMount #

一、使用pnpm新建项目 可以使用npm 或yarn或pnpm来初始化Vite项目 pnpm create vite xxx(项目名称) #选择vue #选择js cd xxx (进入项目目录) #安

一、概述 <script setup> 是在单文件组件(SFC)中使用组合式API的编译时语法糖,解决Vue3.0中setup需要频繁将声明的变量、函数以及import引入的内容通过return向外

一、概述 在vue2中,data函数里返回的值直接为响应式,但在vue3中我们需要使用一些函数才能达到这个效果。 setup函数中拿不到vue的this。 二、常用函数 <template> <d

<script> export default { setup() { const func1= () => { console.log("func1");

缓存页面主要Jul为了防止重复渲染dom,减少加载时间及性能消耗,提高用户体验。 一、旧版的语法 <keep-alive> <router-view v-if="$route.meta.kee

一、在main.js挂载 import { createApp } from 'vue' import App from './App.vue' import router from './route

一、概述 在vue3中没有$refs这个对象,可以使用如下方法 <template> <div><input type="text" ref="txt1" value="hello" /></div>

方式一、全局引入 全局引入element之后事,element已经在app.config.globalProperties添加了全局方法$message,所以可以在组件中直接使用。 方式二、按需引入

一、useRouter传参的方式 1、隐匿传参params import { useRouter } from 'vue-router' export default { setup() {