当前位置:首页 > 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:

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:

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:

vue实现store

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

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

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

标签: vuestore
分享给朋友:

相关文章

vue实现drag

vue实现drag

Vue 实现拖拽功能的方法 在 Vue 中实现拖拽功能可以通过原生 HTML5 的拖拽 API 或第三方库如 vuedraggable 来完成。以下是两种常见方法的实现方式。 使用 HTML5 拖拽…

vue怎么实现

vue怎么实现

Vue 实现方法 Vue 是一个流行的前端框架,用于构建用户界面。以下是几种常见的实现方法: 数据绑定 使用 v-model 指令实现双向数据绑定,适用于表单输入元素。 <input v-m…

vue轮询实现

vue轮询实现

Vue 轮询实现方法 在 Vue 中实现轮询可以通过以下几种方式: 使用 setInterval data() { return { pollInterval: null } },…

vue mvvm 实现

vue mvvm 实现

Vue MVVM 实现原理 Vue.js 的 MVVM(Model-View-ViewModel)架构通过数据绑定和响应式系统实现视图与数据的自动同步。以下是其核心实现机制: 数据劫持与响应式系统…

vue实现评分

vue实现评分

Vue 实现评分功能 使用组件库实现 安装 element-ui 或 ant-design-vue 这类 UI 库,它们已经内置了评分组件。 以 element-ui 为例: <te…

vue事件实现

vue事件实现

Vue 事件实现方法 在Vue中,事件处理是通过v-on指令或@简写来实现的。以下是几种常见的事件处理方式: 使用v-on指令绑定事件 <button v-on:click="handleC…