网站首页 > 技术文章 正文
前端小伙伴们在做vue开发的时候,一定会遇到需要在不同的页面组件中做状态管理,今天就来学习下vue状态管理库vuex。
1. Vuex介绍
Vuex是一个专为Vue.js应用程序开发的状态管理模式和库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。核心概念包括:
- state:管理组件数据,数据是响应式的,当数据改变时驱动视图更新。
- mutations:更新数据,state中的数据只能使用mutations去改变数据(只能处理同步的场景)。
- actions:处理异步场景,处理成功后把数据提交给mutations,进而更新state。
- getters:相当于在State和组件之间添加一个环节(对state中的数据进行加工处理后再提供给组件)。
- modules:当应用变得非常复杂时,store对象可以被分割成模块。
2. 初始化项目
安装Vuex
在Vue.js项目中安装Vuex:
npm install vuex --save
创建store
创建一个store.js文件,并初始化Vuex:
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;
}
}
});
export default store;
集成到Vue实例
在main.js中引入并使用store:
import Vue from 'vue';
import App from './App.vue';
import store from './store';
new Vue({
el: '#app',
store,
render: h => h(App)
});
3. 使用Vuex
在组件中使用Vuex管理的状态:
<template>
<div>
<p>{{ count }}</p>
<button @click="increment">Increment</button>
</div>
</template>
<script>
import { mapState, mapActions } from 'vuex';
export default {
computed: {
...mapState([
'count'
])
},
methods: {
...mapActions([
'increment'
])
}
}
</script>
4. Vuex的模块化(Modules)
对于大型应用,可以使用Vuex的模块化功能来组织代码:
// store/modules/counter.js
export default {
state: { count: 0 },
mutations: {
increment(state) {
state.count++;
}
}
};
// store/index.js
import Vue from 'vue';
import Vuex from 'vuex';
import counter from './modules/counter';
Vue.use(Vuex);
export default new Vuex.Store({
modules: {
counter
}
});
在组件中使用模块化状态:
import { mapState } from 'vuex';
export default {
computed: {
...mapState({
count: state => state.counter.count
})
}
}
创作不易,如果这篇文章对你有用,欢迎点赞关注加评论哦。
猜你喜欢
- 2025-01-11 手把手教你的Vue项目实战
- 2025-01-11 很香的几款开源免费的流程设计器
- 2025-01-11 测试开发如何快速上手Vue前端开发(上)
- 2025-01-11 Vue框架学习记录5
- 2025-01-11 Vue + SpringBoot 项目实战(三):我的助手之前后端联调
- 2025-01-11 Vue.js v3.0 教程-简单创建一个 Vue 应用
- 2025-01-11 超优秀 uniapp+vue3 ts 跨端组件库TMUI
- 2025-01-11 Vue3.2 语法基础详解
- 2025-01-11 .NETCore3.1+Vue.js打造的低代码工作流引擎
- 2025-01-11 无需写代码!可一键生成前后端代码的开源工具
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)