Vue组件学习 | 二、Vuex组件

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

Vuex 基本用法

安装 Vuex

首先,你需要安装 Vuex。如果你使用的是 npm,可以使用以下命令:

bash 复制代码
npm install vuex --save

创建 Vuex Store

创建一个新的 Vuex store 实例,它将包含所有状态(state)、改变状态的方法(mutations)和获取状态的函数(getters)。

javascript 复制代码
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(context) {
      context.commit('increment')
    }
  },
  getters: {
    doubleCount(state) {
      return state.count * 2
    }
  }
})

在 Vue 组件中使用 Vuex Store

你可以在 Vue 组件中使用 mapStatemapGettersmapActionsmapMutations 辅助函数来使用 Vuex store。

vue 复制代码
<template>
  <div>
    <p>{{ count }}</p>
    <p>{{ doubleCount }}</p>
    <button @click="increment">Increment</button>
  </div>
</template>

<script>
import { mapState, mapGetters, mapActions } from 'vuex'

export default {
  computed: {
    ...mapState(['count']),
    ...mapGetters(['doubleCount'])
  },
  methods: {
    ...mapActions(['increment'])
  }
}
</script>

Vuex 模块

Vuex 允许你将 store 分割成模块,每个模块拥有自己的 state、mutations、actions、getters,甚至是嵌套子模块。

javascript 复制代码
const moduleA = {
  state: { ... },
  mutations: { ... },
  actions: { ... },
  getters: { ... }
}

const store = new Vuex.Store({
  modules: {
    a: moduleA
  }
})

Vuex 严格模式

Vuex 允许你以严格模式运行,这在开发过程中非常有用,因为它会阻止你对状态的直接更改。

javascript 复制代码
const store = new Vuex.Store({
  // ...
  strict: process.env.NODE_ENV !== 'production'
})

Vuex 插件

Vuex 允许你使用插件来扩展 store 的功能。插件可以监听 Vuex store 的 mutation 并响应它们。

javascript 复制代码
const myPlugin = store => {
  store.subscribe((mutation, state) => {
    // 调用 API 或者其他响应
  })
}

const store = new Vuex.Store({
  // ...
  plugins: [myPlugin]
})

以上就是 Vuex 的基本用法。

你可以在 Vuex 官方文档 中找到更多高级用法和配置选项。

相关推荐
喜欢吃燃面4 分钟前
C++算法竞赛:位运算
开发语言·c++·学习·算法
传奇开心果编程4 分钟前
【传奇开心果系列】Flet框架实现的家庭记账本示例自定义模板
python·学习·ui·前端框架·自动化
Stringzhua11 分钟前
Vue中的数据渲染【4】
css·vue.js·css3
阿珊和她的猫4 小时前
v-scale-scree: 根据屏幕尺寸缩放内容
开发语言·前端·javascript
_Kayo_6 小时前
node.js 学习笔记3 HTTP
笔记·学习
加班是不可能的,除非双倍日工资8 小时前
css预编译器实现星空背景图
前端·css·vue3
wyiyiyi9 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
CCCC13101639 小时前
嵌入式学习(day 28)线程
jvm·学习
gnip9 小时前
vite和webpack打包结构控制
前端·javascript
excel10 小时前
在二维 Canvas 中模拟三角形绕 X、Y 轴旋转
前端