VUE3全局属性创建与使用

146 阅读1分钟

在Vue 3开发过程中,某些数据或某些函数方法,需要在项目中的任何地方或位置,都能调用或读取,这个时候可以通过全局属性来共享数据或方法

方法一:使用依赖注入(provide & inject)

定义

// 在 main.ts 中定义
app.provide('$globalMsg', 'hello')
// 在 APP.vue 中定义
import { provide } from 'vue';
provide('$globalMsg', 'hello')

在页面中读取

import { inject } from 'vue';
const $globalMsg = inject('$globalMsg')
console.log('$globalMsg=======', $globalMsg)

方法二:全局属性对象(app.config.globalProperties)

在 main.ts 中定义

app.config.globalProperties.$globalMsg = 'hello'

在页面中读取

// 在标签中读取
<div>{{ $globalMsg }}</div>
// 使用 getCurrentInstance Api钩子
const { $globalMsg } = getCurrentInstance()?.appContext.config.globalProperties
console.log('$globalMsg=======', $globalMsg)
// 或
const { proxy } = getCurrentInstance()
console.log('$globalMsg=======', proxy.$globalMsg)

方法三:使用pinia

Pinia 是 Vue 的存储库,它允许您跨组件/页面共享状态,类似 Vuex,是 Vue 的另一种状态管理方案!更多内容可以查看这篇文章《VUE3使用Pinia》