网上有关vuex的文章很多,但有些比较复杂,这篇文章能让你快速使用vuex:

vuex 用处:管理全局状态(类似全局变量,每个组件都能访问到)

结构:

  • state 存放状态
  • mutations state成员操作(修改state值唯一的方法)
  • getters 加工state成员给外界
  • actions 异步操作
  • modules 模块化状态管理

vuex 用法:

1. 安装:npm install vuex --save (安装vuex保存到本地)

2. 创建js文件(见下图,这里我随意命名为store.js)

3.然后我们在main.js文件中:

3.1 引入文件(根据自己的路径写): import store from './store.js';

3.2 在vue实例全局引入store对象:new Vue({store})

以上步骤就完成了,接下来是具体使用方法

//下面是一个js文件,用最简单最全的例子展示了全局数据 city 和 cityID 的声明以及改变的方法;
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const store = new Vuex.Store({
state: {
city: '深圳',
cityID: "1"
},
getters: {
getCity(state) { //方法名随意,主要是来承载变化的city的值,下面mutations,actions里面的方法名也是随意定的
return state.city
},
getCityId() { //方法名随意,主要是用来承载变化的cityID的值,下面mutations,actions里面的方法名也是随意的
return state.cityID
}
},
mutations: {
setCity(state, value) {
state.city = value;
},
setCityID(state, value) {
state.cityID = value;
}
},
actions: {
selectCity(context, params) {
context.commit('setCity', params.city);
},
selectCityID(context, params) {
context.commit('setCityID', params.id);
}
}
});
export default store;

获取和修改state有使用辅助函数和不使用两种方法,如果使用,请在使用的文件中添加:

import {mapState,mapGetters,mapMutations,mapActions} from 'vuex'

用到里面哪个就引入哪个,如果不使用则不需要添加。
 

获取state的方法:

1.不引入 mapState(不使用辅助函数): this.$store.state
2.引入 mapState(使用辅助函数):
  computed: {
//设置别名,起到简化代码的作用,比如this.$store.state.cityID可以用this.cId替代
// 方法一:
// ...mapState({
// cId: state => state.cityID,
// cname:state => state.city
// }),
// 方法二:
// ...mapState({
// cId: 'cityID',
// cname:'city'
// }),
// 方法三(不设置别名,直接使用this.cityID即可):
...mapState(['cityID','city']),
},

修改state的方法:

1.不引入 mapState(不使用辅助函数):

方法一: 用this.$store.commit执行mutation里的方法 
//this.$store.commit("setCityID", 6);
方法二: 用 this.$store.dispatch执行actions里的方法
//this.$store.dispatch("selectCity", { id: 6});

2.引入 mapState(使用辅助函数),和获取state一样能设置别名,下面不配置别名:

  methods: {
...mapActions(['cityID','selectCityID']),
changeId(params) { //params为要修改的数,比如6
this.selectCityID({ id:params });
console.log(this.$store.state);//这时候打印出来cityID变为6了
}
},
 

最新文章

  1. iOS9网络适配(ATS)
  2. 【集合框架】JDK1.8源码分析之ArrayList(六)
  3. stm32串口输出丢失第一个字符的问题及原因
  4. Appium for win7 环境搭建
  5. U3D自定义Inspector项未触发保存事件的解决方案
  6. win8下出现安装sql2012 正在启动操作系统功能"NetFx3"
  7. iOS开发——UI篇OC篇&TextField作为搜索框的使用
  8. C# WinForm多线程(三)---- Control.Invoke[转]
  9. Mysql DB2等数据库分页的实现
  10. 重温Java的类加载机制
  11. BZOJ 1876: [SDOI2009]SuperGCD( 更相减损 + 高精度 )
  12. 开始QT+OpenCV学问
  13. 简单cpu处理器
  14. 企业架构(TOGAF)学习
  15. kubernetes pod infra container网络原理
  16. Hibernate关联关系之多对多
  17. 【WebService】使用CXF开发WebService(四)
  18. 6.翻译:EF基础系列---什么是EF中的实体?
  19. iOS Socket编程-C语言版(UDP)
  20. 通过http方式关闭和重启Jenkins

热门文章

  1. 报错OPTION SQL_SELECT_LIMIT=
  2. 2017校赛 问题 F: 懒人得多动脑
  3. 使用哈工大LTP进行文本命名实体识别并保存到txt
  4. Mysql 查询一天中,每个小时数据的数量
  5. oracle函数 ROW_NUMBER()
  6. PyTorch入门学习(二):Autogard之自动求梯度
  7. @loj - 3039@ 「JOISC 2019 Day4」蛋糕拼接 3
  8. css半透明渐变过渡效果
  9. name和code的相关设置
  10. H3C 命令行帮助特性