Vuex实践小记
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'
})
}
先引入vuex给我们提供的语法糖
import { mapActions } from 'vuex'
同样也要写在methods下
methods: {
test () {
this.setSignState({
info: obj,
testState: false
})
},
...mapActions([
'setSignState'
])
}
Vuex实践小记的更多相关文章
- Vuex实践(下)-mapState和mapGetters
Vuex系列文章 <Vuex实践(上)> <Vuex实践(中)-多module中的state.mutations.actions和getters> <Vuex实践(下)- ...
- vuex实践之路——笔记本应用(三)
Actions Action 类似于 mutation,不同在于: Action 提交的是 mutation,而不是直接变更状态. Action 可以包含任意异步操作. 让我们来注册一个简单的 act ...
- vuex实践之路——笔记本应用(二)
上一篇我们简单介绍了vuex在此项目中的作用. 这次来理一下项目的整体思路. main.js上次看过了,首先看App.vue文件 我们引入了Toolbar.vue,NodeList.vue,Edito ...
- vuex实践之路——笔记本应用(一)
首先使用vue-cli把环境搭建好. 介绍一下应用的界面. App.vue根组件,就是整个应用的最外层 Toolbar.vue:最左边红色的区域,包括三个按钮,添加.收藏.删除. NoteList.v ...
- Vuex 实践讲解
state 用来数据共享数据存储 mutation 用来注册改变数据状态 getters 用来对共享数据进行过滤操作 action 解决异步改变共享数据 这个四大特征就是核心,如何用怎么用 接下来还是 ...
- Vuex实践
本文来自网易云社区 作者:刘凌阳 前言 2017年对于Vue注定是不平凡的一年.凭借着自身简介.轻量.快速等特点,Vue俨然成为最火的前端MVVM开发框架.随着Vue2.0的release,越来越多的 ...
- Vue 浅析与实践
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:曾柏羲 导语 入职接到的第一个需求是实现一个关于K歌实体售卖的ERP系统,管理系统过去做过不少,这次打算换个姿势,基于时下正热但早已不新 ...
- 20155334 曹翔 Exp3 免杀原理与实践
20155334 曹翔 Exp3 免杀原理与实践 小记:这次实验,困难重重,失败练练,搞得我们是心急如焚,焦头烂额,哭爹喊娘 一.基础问题回答 杀软是如何检测出恶意代码的? 每个杀软都有自己的检测库, ...
- Vue学习笔记:Vuex
为什么需要Vuex 管理共享状态 解决一份数据在多个组件中试用的困难 系统化的状态管理,区别于小型状态过来 底层设计模式: 全局单例模式 应用场景 适合中大型项目: 小项目反而会因为引入更多概念和框架 ...
随机推荐
- ZOJ1081 Points Within 点和多边形的位置关系
ZOJ1081 给一个点和一个多边形 判断点在多边形内(边上)还是在多边形外 在多边形外的点引一条射线必然穿过多边形的两条边 而在多边形内的点则不一定. 当然凹多边形有特殊情况 但是总能找到对应位置关 ...
- sql复杂查询语句总结
转自:http://blog.csdn.net/fengfeng91/article/details/15029173 create table student( sno varchar2(10) p ...
- HTML5移动Web开发
1. 响应式web设计 说到这个,移动开发面对的屏幕尺寸那叫一个丰富,其中安卓阵营就够让人头痛的.我们在PC端常用的两种布局方式就是固定布局和弹性布局,前者设置一个绝大多数电脑能正常显示的固定宽度居中 ...
- 源码阅读之HashMap(JDK8)
概述 HashMap根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的. HashMap最多只允许一条记录的键为null,允许多条记录 ...
- 例题 3-5 谜题 uva227 Puzzle
A children’s puzzle that was popular years ago consisted of a × frame which contained small squares ...
- 如何保证access_token长期有效--微信公众平台开发
http://blog.csdn.net/qq_33556185/article/details/52758781 import javax.servlet.ServletContext; impor ...
- [Usaco2011 Jan]道路和航线
Description Farmer John正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到T个城镇 (1 <= T <= 25,000),编号为1T.这些城镇之间通过R条 ...
- js一键导出Excel
HTML: 1 <div class="container"> 2 <table id="backViewTable" class=" ...
- jquery实现点击进入新的页面。(jquery实现超链接)
<script src="jquery-1.9.1.min.js" type="text/javascript"></script> & ...
- LockDemo 锁对象
class Resource { private boolean flag = false; private String name; private int count; //资源锁 Lock lo ...