Vue 3 少量全局数据共享的最佳实践(无需 Vuex/Pinia)
在 Vue 3 项目中,如果你只有很少的数据需要全局共享,其实没必要引入 Vuex、Pinia 这类重量级状态管理库,完全可以用更简单的方式实现全局数据共享。下面我给你介绍几种常用且简洁的做法
1.组合式 API + 单文件导出(推荐)
直接用 ref/reactive 在模块作用域创建全局响应式数据,然后导出即可。
示例:
// src/globalState.js
import { ref, reactive } from 'vue'
// 全局响应式变量
export const globalCount = ref(0)
export const globalUser = reactive({ name: '张三', age: 18 })
在任意组件中直接引入使用:
<script setup>
import { globalCount, globalUser } from '@/globalState'
function add() {
globalCount.value++
globalUser.age++
}
</script>
<template>
<div>
<p>全局计数:{{ globalCount }}</p>
<p>全局用户:{{ globalUser.name }} - {{ globalUser.age }}</p>
<button @click="add">增加</button>
</div>
</template>
特点:





