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 管理共享状态 解决一份数据在多个组件中试用的困难 系统化的状态管理,区别于小型状态过来 底层设计模式: 全局单例模式 应用场景 适合中大型项目: 小项目反而会因为引入更多概念和框架 ...
随机推荐
- Ubuntu 14.04 台式机锐捷使用:
1.解压文件:RG_Supplicant_For_Linux_V1.31.zip2.sudo chmod -R 777 rjsupplicant3.进入文件夹(./rjsupplicant.sh -a ...
- MyBatis高级查询 一对多映射
数据库表在一对一映射中. 在数据库sys_user_role中新增一条记录 一个用户可以有多个角色.查询出所有用户和所对应的角色. 1.collection集合的嵌套结果映射 <!-- SysU ...
- ASP.NET Core&EF 笔记
首先创建Asp.net Core项目,然后通过 NuGet 安装 EntityFrameworkCore: Microsoft.EntityFrameworkCore.SqlServer Micros ...
- python批量下载图片
从数据库拿了一批图片地址,需要一张一张的把图片下载下来,自从有了python,想到能省事就琢磨如何省事. 代码如下: import urllib.requestf=open("E:\999\ ...
- 所有版本chrome、chromedriver、firefox下载链接
1. 所有版本chrome下载 是不是很难找到老版本的chrome?博主收集了几个下载chrome老版本的网站,其中哪个下载的是原版的就不得而知了. http://www.slimjet.com/ch ...
- Hbase源码分析:server端RPC
server端rpc包括master和RegionServer.接下来主要梳理一下,master和regionserver中有关rpc创建,启动以及处理的过程. 1,server rpc的初始化过程 ...
- JDBC和数据库连接池
JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成. ● JDBC ● C3P0 ● DRUID 一.JDBC ...
- offset家族基本简介
Offset家族简介 offset这个单词本身是--偏移,补偿,位移的意思. js中有一套方便的获取元素尺寸的办法就是offset家族: offsetWidth和offsetHight 以及offse ...
- python自动化--语言基础线程、生产者消费者示例
进程与线程的区别:进程不共享空间,线程共享地址空间 线程共享空间优缺点:优点:多线程给用户的体验好些,打开时占用的内存比进程少缺点:共享地址空间会相互干扰,甚至有影响 import threading ...
- Android学习笔记(四) JAVA基础知识回顾
一.接口 1)接口中定义的方法都是public权限,并且默认为public,而不是default. 2)接口的实现(implements)是特殊的继承,类似于父类子类的关系,可以向上转型(非常重要). ...