You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在全新Nuxt 3项目中安装并配置Vuex?

在Nuxt 3中安装并配置Vuex的分步指南

以下是基于npx nuxi init创建的全新Nuxt 3项目,安装和配置Vuex的完整步骤:

1. 安装Vuex依赖

Nuxt 3 默认不包含Vuex,需要手动安装适配Vue 3的Vuex 4.x版本,执行以下命令:

npm install vuex@next
# 或使用yarn
yarn add vuex@next

2. 创建Vuex Store文件

在项目根目录下新建store文件夹,然后在其中创建index.js文件,写入基础的Store配置:

// store/index.js
import { createStore } from 'vuex'

export const store = createStore({
  state() {
    return {
      count: 0
    }
  },
  mutations: {
    increment(state) {
      state.count++
    },
    decrement(state) {
      state.count--
    }
  },
  actions: {
    asyncIncrement({ commit }) {
      setTimeout(() => {
        commit('increment')
      }, 1000)
    }
  },
  getters: {
    doubleCount(state) {
      return state.count * 2
    }
  }
})

export default store

3. 创建Nuxt插件注册Vuex

在项目根目录的plugins文件夹中新建vuex.js文件,用来在Nuxt应用启动时注册Vuex Store:

// plugins/vuex.js
import { store } from '~/store'

export default defineNuxtPlugin(nuxtApp => {
  nuxtApp.vueApp.use(store)
})

注意:Nuxt 3的插件必须导出一个默认函数,通过nuxtApp.vueApp访问Vue实例完成插件注册。

4. 在组件/页面中使用Vuex

选项式API示例(pages/index.vue)

<template>
  <div>
    <p>当前计数: {{ $store.state.count }}</p>
    <p>双倍计数: {{ $store.getters.doubleCount }}</p>
    <button @click="$store.commit('increment')">+1</button>
    <button @click="$store.commit('decrement')">-1</button>
    <button @click="$store.dispatch('asyncIncrement')">延迟+1</button>
  </div>
</template>

组合式API示例(pages/index.vue)

<template>
  <div>
    <p>当前计数: {{ count }}</p>
    <p>双倍计数: {{ doubleCount }}</p>
    <button @click="handleIncrement">+1</button>
    <button @click="handleDecrement">-1</button>
    <button @click="handleAsyncIncrement">延迟+1</button>
  </div>
</template>

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

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

const handleIncrement = () => store.commit('increment')
const handleDecrement = () => store.commit('decrement')
const handleAsyncIncrement = () => store.dispatch('asyncIncrement')
</script>

验证运行

执行npm run dev启动项目,访问http://localhost:3000,点击按钮测试计数变化,确认Vuex正常工作。

内容的提问来源于stack exchange,提问作者IT Time Programming

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 17:46:08