在vue-cli上使用vuex(拆分成到每个文件操作)
2019-07-23 13:06
393 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44014980/article/details/96981337
在vue-cli上使用vuex
什么是vuex呢?
Vuex 是一个专为 Vue.js 应用程序开发的
状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。
他有什么用呢
假如,登录之后的用户信息在很多组件上都需要,那么老办法的话无非就是子传子,子传父,或者存浏览器缓存上,但是这样非常麻烦,所以vuex的作用是把这些数据统一管理起来,需要的话再去拿,这样就简单很多啦,废话不多说,开始正题。
安装
在项目根目录下敲
npm install vuex -S
然后在根目录下创建一个文件夹如图所示:
上图个个文件中的作用
文件名 | 作用 |
---|---|
actions.js | 通过mutation简介更新state的多个方法的对象 |
getters.js | 包含多个基于state的getter计算属性的对象 |
index.js | vuex最核心的管理对象store |
mutation-types.js | 包含N个mutation 的type名称常量 |
mutations.js | 直接更新state的底盘各方法的对象 |
state.js | 变量状态管理 |
下面开始配置vuex
1、在index文件上引入个个文件
import Vue from 'vue' import Vuex from 'vuex' import state from './state' import mutations from './mutations' import actions from './actions' import getters from './getters' Vue.use(Vuex) export default new Vuex.Store({ state, mutations, actions, getters })
2、在state文件上定义变量
export default { userInfo: {}, // 用户信息 dk: {} // 用户打卡信息 }
3、mutation-types上定义mutations的常量名
export const REQ_USER_INFO = 'req_user_info' // 用户登录成功的信息
4、在actions文件上的操作
// 引入mutation的常量 import { REQ_USER_INFO } from './mutation-types' // 引入axios import { reqUserInfo } from '../api' export default { // 同步获取用户数据 recordUser({ commit }, userInfo) { commit(REQ_USER_INFO, { userInfo }) }, // 异步获取用户信息 async getUseInfo ({ commit }) { const result = await reqUserInfo(); if(result.status === 1) { const userInfo = result.data; const dk = result.dk; commit(REQ_USER_INFO, {userInfo, dk}); } } }
5、mutations上的操作
import { REQ_USER_INFO } from './mutation-types' export default { [REQ_USER_INFO] (state, { userInfo, dk = {} }) { state.userInfo = userInfo state.dk = dk } }
6、getters上的操作(总的来说相当于计算属性)
positiveSize (state) { return state.ratings.reduce((preTotal, rating) => preTotal + (rating.rateType === 0 ? 1:0), 0) }
在main上的配置与挂载
import Vue from 'vue' import App from './App' import router from './router' // 引入vuex import store from './store' new Vue({ el: '#app', router, // 使用路由 store, // 使用vuex render: h => h(App), })
在组件上使用vuex
import { mapState } from 'vuex' export default { data() { return { } }, created() { this.getUseInfo() }, methods: { getUseInfo() { this.$store.dispatch('getUseInfo') } }, computed: { ...mapState(['userInfo']) } }
vuex的拆分写法就介绍到这
总的来说,vuex是非常好用的一个工具,提个醒,组件之间相同变量不多的情况下不需要用vuex,直接父子之间传值即可,小项目来说就看个人了
相关文章推荐
- vue项目中使用axios上传图片等文件操作
- Vue-cli配置打包文件本地使用的教程图解
- 使用vue-cli搭建项目的使用,需要引入font-icon文件,报错的解决办法
- 关于使用Vue-cli脚手架配合webpack-simple构建项目操作流程(自用)
- 在 vue-cli 中,使用VueX,并解决刷新state数据丢失问题
- vue-cli3.0 给每个.vue文件的css stylus设置全局变量
- 使用java.io.*操作文件的拆分与合并,Application一例!
- vue-cli构建项目在index.html中使用静态文件
- 详解如何在vue-cli中使用vuex
- 基于vue-cli的vue项目之vuex的使用5------watch监听vuex内部数据变化
- 使用java.io.*操作文件的拆分与合并,Application一例!
- 码云的操作以及vue-cli的使用
- 使用java.io.*操作文件的拆分与合并,Application一例!
- 使用java.io.*操作文件的拆分与合并,Application一例
- 手摸手教你在vue-cli里面使用vuex,以及vuex简介
- vue项目中使用vuex,store文件详解
- vuex在vue-cli和webpack构建的项目中的简单使用
- vue-cli下的vuex的简单Demo图解(实现加1减1操作)
- vue-cli项目打包多个与static文件同级的静态资源目录(copy-webpack-plugin插件的使用)
- 基于vue-cli的vue项目之vuex的使用5------watch监听vuex内部数据变化