1.目录结构

2.开始(安装vuex)

  npm install vuex --save

3.编辑store/index.js(创建一个Vuex.store状态管理对象)

import Vue from 'vue'
import Vuex from 'vuex'
import * as actions from './actions'
import * as getters from './getters'
import state from './state'
import mutations from './mutations'
//开发的时候借助这个我们可以在控制台追踪到state更改的各个状态
import creatLogger from 'vuex/dist/logger' Vue.use(Vuex) const debug = process.env.NODE_ENV !== 'production' export default new Vuex.Store({
actions,
getters,
state,
mutations,
strict: debug,
plugins: debug ? [creatLogger()] : []
})

4.编辑store/state.js(也就是添加你要管理的数据)

const state = {
showSignModel: false,
currentday: 0,
chooseClaState: false,
signState: false,
awardInfo: {}
}
export default state

5.编辑store/mtations-types.js(这个主要是为了组织代码的时候足够清晰,便于维护,在mutation.js中帮助我们建立映射关系)

const SET_SHOW_SIGN_MODEL = 'SET_SHOW_SIGN_MODEL'
const SET_CURRENT_DAY = 'SET_CURRENT_DAY'
const SET_CHOOSE_CLASS = 'SET_CHOOSE_CLASS'
const SET_SIGN_STATE = 'SET_SIGN_STATE'
const SET_AWARD_INFO = 'SET_AWARD_INFO'
export {
SET_SHOW_SIGN_MODEL,
SET_CURRENT_DAY,
SET_CHOOSE_CLASS,
SET_SIGN_STATE,
SET_AWARD_INFO
}

6.编辑store/mutation.js(在vuex中要修改state的的状态或者说值,只能通过mutation去修改,mutation是同步的)

import * as types from './mutation-types'
const mutations = {
[types.SET_SHOW_SIGN_MODEL] (state, showSignModel) {
state.showSignModel = showSignModel
},
[types.SET_CURRENT_DAY] (state, currentday) {
state.currentday = currentday
},
[types.SET_CHOOSE_CLASS] (state, chooseState) {
state.chooseClaState = chooseState
},
[types.SET_SIGN_STATE] (state, signState) {
state.signState = signState
},
[types.SET_AWARD_INFO] (state, info) {
state.awardInfo = info
}
} export default mutations

7.编辑store/getters.js(通过getters.js我们可以获取state中的状态)

const showSignModel = state => state.showSignModel
const currentday = state => state.currentday
const chooseClaState = state => state.chooseClaState
const signState = state => state.signState
const awardInfo = state => state.awardInfo
export {
showSignModel,
currentday,
chooseClaState,
signState,
awardInfo
}

8.如果要同时修改多个状态时,这个时候我们可以将多个mutation封装为一个actions(actions可以一次性提交多个mutation)

import * as types from './mutation-types'

const setSignState = function ({commit, state}, {info, signState}) {
commit(types.SET_AWARD_INFO, info)
commit(types.SET_SIGN_STATE, signState)
} export {
setSignState
}

9.在组件中获取状态(在computed获取)

先引入vuex给我们提供的语法糖
import { mapGetters} from 'vuex'
computed: {
...mapGetters([
'signState',
'awardInfo'
])
}
根据状态显示元素
<div class="sign_model" v-show="signState"></div>

10.在组件中修改状态(要记得将vuex提供给我们的依法堂书写在methods下,如下:)

先引入vuex给我们提供的语法糖
import { mapMutations } from 'vuex'
methods: {
closeMode () {
// 关闭弹窗
setTimeout(() => {
this.hideMode(false)
}, 2500)
},
...mapMutations({
hideMode: 'SET_SIGN_STATE'
})
}
11.一次性修改多个状态(vuex也给我们提供了actions的语法糖...mapActions)
先引入vuex给我们提供的语法糖
import { mapActions } from 'vuex'
同样也要写在methods下
methods: {
test () {
this.setSignState({
info: obj,
testState: false
})
},
...mapActions([
'setSignState'
])
}

Vuex实践小记的更多相关文章

  1. Vuex实践(下)-mapState和mapGetters

    Vuex系列文章 <Vuex实践(上)> <Vuex实践(中)-多module中的state.mutations.actions和getters> <Vuex实践(下)- ...

  2. vuex实践之路——笔记本应用(三)

    Actions Action 类似于 mutation,不同在于: Action 提交的是 mutation,而不是直接变更状态. Action 可以包含任意异步操作. 让我们来注册一个简单的 act ...

  3. vuex实践之路——笔记本应用(二)

    上一篇我们简单介绍了vuex在此项目中的作用. 这次来理一下项目的整体思路. main.js上次看过了,首先看App.vue文件 我们引入了Toolbar.vue,NodeList.vue,Edito ...

  4. vuex实践之路——笔记本应用(一)

    首先使用vue-cli把环境搭建好. 介绍一下应用的界面. App.vue根组件,就是整个应用的最外层 Toolbar.vue:最左边红色的区域,包括三个按钮,添加.收藏.删除. NoteList.v ...

  5. Vuex 实践讲解

    state 用来数据共享数据存储 mutation 用来注册改变数据状态 getters 用来对共享数据进行过滤操作 action 解决异步改变共享数据 这个四大特征就是核心,如何用怎么用 接下来还是 ...

  6. Vuex实践

    本文来自网易云社区 作者:刘凌阳 前言 2017年对于Vue注定是不平凡的一年.凭借着自身简介.轻量.快速等特点,Vue俨然成为最火的前端MVVM开发框架.随着Vue2.0的release,越来越多的 ...

  7. Vue 浅析与实践

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:曾柏羲 导语 入职接到的第一个需求是实现一个关于K歌实体售卖的ERP系统,管理系统过去做过不少,这次打算换个姿势,基于时下正热但早已不新 ...

  8. 20155334 曹翔 Exp3 免杀原理与实践

    20155334 曹翔 Exp3 免杀原理与实践 小记:这次实验,困难重重,失败练练,搞得我们是心急如焚,焦头烂额,哭爹喊娘 一.基础问题回答 杀软是如何检测出恶意代码的? 每个杀软都有自己的检测库, ...

  9. Vue学习笔记:Vuex

    为什么需要Vuex 管理共享状态 解决一份数据在多个组件中试用的困难 系统化的状态管理,区别于小型状态过来 底层设计模式: 全局单例模式 应用场景 适合中大型项目: 小项目反而会因为引入更多概念和框架 ...

随机推荐

  1. bzoj1050

    最小生成树 其实这道题是最小生成树的变种,我们发现答案不一定在最小/最大生成树上,最短路算法也不可行,因为我们我们并不是希望最小值尽量的大,最大值尽量的小,这样不一定是最优的,那么我们枚举最小的边,然 ...

  2. E20170606-gg

    complete adj. 完整的; 完成的; (用以强调) 完全的; 达到结尾的;  vt. 完成,使完满; 完成或结束; 填写(表格); process   n. 过程; 工序; 做事方法; 工艺 ...

  3. LaTex简历排版

    为了写好简历,倒腾了好几天的Latex,主要是因为中文支持问题还有morderncv的更新问题... 1.  http://www.ctex.org/CTeXDownload/ 建议下载v2.9.2. ...

  4. (快排)51NOD 1018 排序

    给出N个整数,对着N个整数进行排序   Input 第1行:整数的数量N(1 <= N <= 50000) 第2 - N + 1行:待排序的整数(-10^9 <= A[i] < ...

  5. python中多线程(1)

    一多线程的概念介绍 threading模块介绍 threading模块和multiprocessing模块在使用层面,有很大的相似性. 二.开启多线程的两种方式 1.创建线程的开销比创建进程的开销小, ...

  6. C#与C++的区别(三) 委托与事件

    在C#中没有C++中的函数指针的概念,但是有委托的概念,功能与函数指针类似. C# 委托(Delegate) C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针.委托(Delega ...

  7. mutiset HDOJ 5349 MZL's simple problem

    题目传送门 /* 这题可以用stl的mutiset容器方便求解,我对这东西不熟悉,TLE了几次,最后用读入外挂水过. 题解有O(n)的做法,还以为我是侥幸过的,后来才知道iterator it写在循环 ...

  8. E - A^B mod C (大数乘方取模)

    Description Given A,B,C, You should quickly calculate the result of A^B mod C. (1<=A,B,C<2^63) ...

  9. C# 自动批量导入图片到数据库中

    using Model; using System; using System.Collections.Generic; using System.Data; using System.Data.Sq ...

  10. [ TJOI 2012 ] 防御

    \(\\\) Description 有 \(n\) 人,第 \(i\) 个人有一个护甲值 \(a_i\). 有 \(m\) 次操作,分为以下两种: \(A\ l\ r\ x\) 对编号在 \([l, ...