vueX使用说明

本文详细介绍了如何安装配置VueX,并讲解了VueX的四个核心模块——state、getters、mutations和actions的使用方法。通过实例展示了如何在组件中获取state数据、通过getters进行计算、通过mutations直接修改state以及如何在actions中处理异步操作。此外,还提到了VueX的模块化配置和不同模块的角色定位。
摘要由CSDN通过智能技术生成

一、安装配置vueX

(1) 安装

npm install vuex --save

(2) 在main.js中对vueX进行配置

import Vue from 'vue'
import App from './App'
import store from './store'//引入store
import router from './router'

import { i18n } from './utils/i18n'

Vue.config.productionTip = false

Vue.use(ElementUI);
/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  store,//将store暴露出去
  i18n,
  render: h => h(App)
})

(2) store.js文件的基本结构(普通方式)

import Vue from 'vue'
import Vuex from './vuex'
Vue.use(Vuex);
export default new Vue.Store({
state:{},//用于存储数据,相当于vue组件中的data
getters:{},//对state中的数据进行二次处理,相当于vue中的过滤器filter,在getters中调用state里面的数据时直接用state.属性名 的方式
mutations:{},//对数据进行计算的方法,相当于vue中的computed。调用里面定义的方法:this.$store.commit('mutationName',参数)
actions:{}//处理mutations中已经定义的方法,其直接触发方式是this.$store.dispach(actionName)
})
//modules:{}模块化vuex

分模块:

import Vue from 'vue'
import Vuex from './vuex'
Vue.use(Vuex);
export default new Vue.Store({
modules:{
	login,
	app,
	user
}//模块化vuex

二、vueX各模块介绍

1.state

在任意组件中获取state中数据的方法:

this.$store.state.XXX;
this,$store.getters.xxx

2.getters的使用

代码如下(示例):

state:{
	count:10,
	id:1
},
getters:{
	counts:state => state.count +10 ;//es6语法
	counts:function(state){//es5语法
		return state.count+10
	}

es6箭头函数:
1、当只有一个参数时 counts:state => state.count +10 ;
2、当没有参数时: counts:() => state.count +10 ;
3、当有多个参数时:counts:(参数1,参数2 ,.....参数n) => state.count +10 ;

3.mutations的使用

代码如下(示例):

state:{
	count:10,
	id:1
},
getters:{
	counts:state => state.count +10 ;//es6语法
	counts:function(state){//es5语法
		return state.count+10
	},
mutations:{
	SET_COUNT(state,value){
		state.count=value
	}
},
//更改state中的值时必须通过此方法,mutations和getters的区别:getters是将state中的值取过来进行计算后赋给别的变量,mutations是直接修改state的值
//调用mutations中的方法:this.$store.commit.方法名

//在任意组件中调用SET_COUNT方法
this.$store.commit('SET_COUNT',30)//此时,state中的count值为30

4.actions的使用

action的功能和mutation是类似的,都是去变更store里的state,不过action和mutation有两点不同:
(1)action主要处理的是异步的操作,mutation必须同步执行,而action就不受这样的限制,也就是说action中我们既可以处理同步(视觉触发Action、Action再触发Mutation),也可以处理异步的操作;
(2)action改变状态,最后是通过提交mutation this.$store.dispatch(actionName);
(3)角色定位基于流程顺序,二者扮演的角色不同:
Mutation:专注于修改State,理论上是修改State的唯一途径;
Action:业务代理,异步请求

代码如下(示例):

state:{
	count:10,
	id:1
},
getters:{
	counts:state => state.count +10 ;//es6语法
	counts:function(state){//es5语法
		return state.count+10
	},
mutations:{
	SET_COUNT(state,value){
		state.count=value
	}
},
actions:{
	setMenu(comtent,data){
		comtent.commit('SET_COUNT')
	}


//在任意组件中调用setMenu方法
this.$store.dispatch('setMenu')//执行过程:通过action触发setMenu函数,再通过setMenu函数触发mutations中的SET_COUNT函数

//actions语法:
//actions{
	//setMenuStates(content,data)第一个参数指向的是state、getters、commit,所以第一个参数也可以是一个对象{state,getters,commit};第二个参数是调用setMenuStates方法时传进来的自定义参数
//}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值