在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》