当前位置:首页 > VUE

vue3实现vuex

2026-02-22 23:24:33VUE

Vue 3 中实现 Vuex 状态管理

Vue 3 中可以通过 Vuex 4(专为 Vue 3 设计)实现状态管理。以下是具体实现步骤。

安装 Vuex 4

通过 npm 或 yarn 安装 Vuex 4:

npm install vuex@next --save
# 或
yarn add vuex@next

创建 Vuex Store

在项目中创建 store 文件(通常为 src/store/index.js):

import { createStore } from 'vuex';

const store = createStore({
  state() {
    return {
      count: 0
    };
  },
  mutations: {
    increment(state) {
      state.count++;
    }
  },
  actions: {
    increment({ commit }) {
      commit('increment');
    }
  },
  getters: {
    doubleCount(state) {
      return state.count * 2;
    }
  }
});

export default store;

在 Vue 应用中引入 Store

main.js 中注册 store:

vue3实现vuex

import { createApp } from 'vue';
import App from './App.vue';
import store from './store';

const app = createApp(App);
app.use(store);
app.mount('#app');

在组件中使用 Store

在组件中可以通过 useStore 访问 store:

<template>
  <div>
    <p>Count: {{ count }}</p>
    <p>Double Count: {{ doubleCount }}</p>
    <button @click="increment">Increment</button>
  </div>
</template>

<script>
import { computed } from 'vue';
import { useStore } from 'vuex';

export default {
  setup() {
    const store = useStore();

    const count = computed(() => store.state.count);
    const doubleCount = computed(() => store.getters.doubleCount);

    const increment = () => {
      store.dispatch('increment');
    };

    return {
      count,
      doubleCount,
      increment
    };
  }
};
</script>

模块化 Store

对于大型项目,可以将 store 拆分为模块:

// src/store/modules/user.js
const userModule = {
  namespaced: true,
  state: () => ({
    name: 'John'
  }),
  mutations: {
    setName(state, name) {
      state.name = name;
    }
  }
};

export default userModule;

store/index.js 中引入模块:

vue3实现vuex

import userModule from './modules/user';

const store = createStore({
  modules: {
    user: userModule
  }
});

在组件中使用模块化 store:

const name = computed(() => store.state.user.name);
const setName = (name) => {
  store.commit('user/setName', name);
};

使用 Composition API 封装 Store

可以封装 store 的逻辑以便复用:

// src/composables/useCounter.js
import { computed } from 'vue';
import { useStore } from 'vuex';

export function useCounter() {
  const store = useStore();

  const count = computed(() => store.state.count);
  const doubleCount = computed(() => store.getters.doubleCount);

  const increment = () => {
    store.dispatch('increment');
  };

  return {
    count,
    doubleCount,
    increment
  };
}

在组件中使用:

import { useCounter } from '@/composables/useCounter';

export default {
  setup() {
    const { count, doubleCount, increment } = useCounter();

    return {
      count,
      doubleCount,
      increment
    };
  }
};

通过以上方法,可以在 Vue 3 中高效地使用 Vuex 进行状态管理。

标签: vuex
分享给朋友:

相关文章

用原生js实现vuex

用原生js实现vuex

使用原生 JavaScript 实现 Vuex 的核心功能 Vuex 是一个状态管理库,其核心功能包括状态管理、响应式数据、提交 mutations 和分发 actions。以下是使用原生 JavaS…

js实现vuex

js实现vuex

Vuex 在 JavaScript 中的实现 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化…

vue实现vuex传值

vue实现vuex传值

Vuex 传值实现方法 Vuex 是 Vue.js 的状态管理库,用于集中管理组件间共享的状态。以下是 Vuex 传值的核心实现方法: 安装与配置 Vuex 确保项目已安装 Vuex。若未安装,可…