溪客(编程代码) 溪客(编程代码)

  • 今天是2025年12月18日 Thursday
  • 首页
  • 知识
  • 网址
  • AI助手

Vue

首页 / 知识 / Vue
  • 绑定 Style
  • 绑定 Class
  • $set
  • $nextTick
  • $emit
  • v-cloak
  • 更新视图
  • 动画
  • 禁止回车提交
  • 自定义组件不显示
  • vue3
    • 状态管理
    • 组件间跳转
    • rsbuild添加index.html
    • vue3基础示例
  • 代码
    • 后退捕获及再按一次退出
### Vue 3 状态管理(中文说明) 在 Vue 3 中,管理应用状态(比如用户信息、全局配置、登录状态等)有多种方式,常用的有以下几种,根据项目复杂度可以选择不同的方案: --- ## 一、基础方式:使用 Composition API(适合简单场景) 如果你的应用比较小,状态只在几个组件之间共享,可以直接用 Vue 3 的 **`ref` / `reactive`** 配合 **Provide / Inject** 或 **Props / Emits** 来共享状态。 ### 示例:使用 reactive 共享状态(非全局,适合父子/兄弟组件) ```javascript // store.js import { reactive } from 'vue' export const state = reactive({ count: 0, user: null }) ``` ```vue ``` ⚠️ 缺点:状态不是响应式全局共享的(除非通过 Provide/Inject 或导入同一个对象),不适合复杂应用。 --- ## 二、推荐方式:使用 Pinia(官方推荐状态管理库) **Pinia** 是 Vue 官方推荐的状态管理库,替代了 Vuex,更简单、类型友好、功能强大,适用于中大型项目。 ### 1. 安装 Pinia ```bash npm install pinia ``` ### 2. 在 main.js 中配置 Pinia ```javascript // main.js import { createApp } from 'vue' import { createPinia } from 'pinia' import App from './App.vue' const app = createApp(App) const pinia = createPinia() app.use(pinia) app.mount('#app') ``` ### 3. 创建一个 Store(比如用户登录状态) ```javascript // stores/user.js import { defineStore } from 'pinia' import { ref } from 'vue' export const useUserStore = defineStore('user', () => { // 状态 const isLoggedIn = ref(false) const userInfo = ref(null) // 方法 const login = (user) => { isLoggedIn.value = true userInfo.value = user } const logout = () => { isLoggedIn.value = false userInfo.value = null } return { isLoggedIn, userInfo, login, logout } }) ``` ### 4. 在组件中使用 Store ```vue ``` ```vue ``` ✅ **优点:** - 简单易用,API 清晰 - 支持 TypeScript - 支持多个 Store,模块化管理 - 调试友好,支持 Vue Devtools --- ## 三、传统方式:Vuex(旧版,逐渐被 Pinia 取代) 如果你在老项目中看到 Vuex,它也是 Vue 的状态管理工具,但官方现在主推 **Pinia**,新项目不建议再使用 Vuex。 --- ## 四、其他方式(按需选择) | 方式 | 适用场景 | 说明 | |------|----------|------| | **Props / Emits** | 父子组件通信 | 简单直接,不适合跨层级 | | **Provide / Inject** | 跨层级组件传值 | 适合深层嵌套组件,但不如 Pinia 管理全局状态方便 | | **Composable + reactive/ref** | 小范围状态共享 | 适合逻辑复用,但全局状态仍需 Pinia | | **Pinia** | 推荐,任何规模 | 官方推荐,模块化、支持 TypeScript | --- ## 总结(推荐方案) | 项目规模 | 推荐方案 | |---------|----------| | 小型项目 / 几个组件共享状态 | Composition API(ref/reactive)+ Provide/Inject | | 中型及以上 / 全局状态(如用户、主题、权限) | **Pinia(强烈推荐)** | | 老项目维护 | Vuex(逐渐淘汰) | --- 🔧 **如果你要快速实现一个 Vue 3 的状态管理(比如用户登录、全局配置等),推荐直接使用 Pinia,简单高效,官方维护,对 TypeScript 支持友好。**
© 2022 - 溪客(编程代码) - 粤ICP备10217501号 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)