当前位置:首页 > VUE

vue实现store

2026-03-06 22:08:19VUE

Vue 中实现 Store 的几种方法

在 Vue 中实现状态管理(Store)有多种方式,可以根据项目需求选择适合的方案。

使用 Vuex(官方状态管理库)

Vuex 是 Vue 官方提供的状态管理库,适合中大型项目。

安装 Vuex:

npm install vuex --save

创建 store:

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++
    }
  },
  actions: {
    increment({ commit }) {
      commit('increment')
    }
  },
  getters: {
    doubleCount: state => state.count * 2
  }
})

export default store

在 main.js 中注入 store:

import store from './store'

new Vue({
  store,
  // ...其他选项
})

使用 Composition API 实现简单 Store

对于小型项目,可以使用 Vue 3 的 Composition API 创建简单的 store:

vue实现store

import { reactive } from 'vue'

export const store = reactive({
  state: {
    count: 0
  },
  increment() {
    this.state.count++
  }
})

在组件中使用:

import { store } from './store'

export default {
  setup() {
    return {
      store
    }
  }
}

使用 Pinia(Vuex 的替代方案)

Pinia 是 Vue 官方推荐的新一代状态管理库,更简单且类型安全。

安装 Pinia:

vue实现store

npm install pinia

创建 store:

import { defineStore } from 'pinia'

export const useCounterStore = defineStore('counter', {
  state: () => ({
    count: 0
  }),
  actions: {
    increment() {
      this.count++
    }
  },
  getters: {
    doubleCount: (state) => state.count * 2
  }
})

在 main.js 中设置:

import { createPinia } from 'pinia'

const pinia = createPinia()
app.use(pinia)

在组件中使用:

import { useCounterStore } from '@/stores/counter'

export default {
  setup() {
    const counter = useCounterStore()
    return { counter }
  }
}

使用 Provide/Inject 实现跨组件状态共享

对于简单的跨组件状态共享,可以使用 Vue 的 provide/inject:

// 父组件
export default {
  provide() {
    return {
      sharedState: reactive({
        count: 0
      })
    }
  }
}

// 子组件
export default {
  inject: ['sharedState']
}

选择哪种方案取决于项目规模和复杂度。小型项目可以使用 Composition API 或 provide/inject,中大型项目推荐使用 Pinia 或 Vuex。

标签: vuestore
分享给朋友:

相关文章

vue实现选择分类

vue实现选择分类

Vue 实现选择分类的方法 使用 v-model 绑定选择值 在 Vue 中可以通过 v-model 指令实现双向数据绑定,适用于下拉选择框(<select>)。以下是一个基本示例: &…

vue实现防抖节流

vue实现防抖节流

Vue 中实现防抖(Debounce) 防抖的核心是延迟执行函数,在连续触发时取消前一次的调用,只执行最后一次。适用于输入框搜索、窗口大小调整等场景。 方法1:使用 Lodash 的 _.debou…

vue实现继承语法糖

vue实现继承语法糖

在Vue中实现继承可以通过多种方式模拟类继承的效果,以下是常见的几种方法: 使用mixins实现逻辑复用 通过Vue的mixins机制共享组件选项,达到类似继承的效果: const Bas…

vue实现签约合作弹窗

vue实现签约合作弹窗

实现签约合作弹窗的步骤 使用Vue实现签约合作弹窗可以通过组件化方式完成,结合模态框和表单交互逻辑。以下是具体实现方法: 1. 创建弹窗组件 新建一个Vue组件文件(如SignContractDia…

vue实现旋转

vue实现旋转

Vue 实现旋转效果的方法 在 Vue 中实现旋转效果可以通过多种方式完成,以下是几种常见的方法: 使用 CSS 动画 通过 Vue 的 :class 或 :style 绑定 CSS 动画实现旋转效…

vue实现逻辑

vue实现逻辑

Vue 实现逻辑的核心概念 Vue.js 是一个渐进式 JavaScript 框架,其核心逻辑围绕数据驱动和组件化开发。通过响应式系统、虚拟 DOM 和组件生命周期等机制,Vue 实现了高效的前端开发…