21.Vuex状态管理

1.Vuex的简单理解

Vuex => 状态管理模式 => 解决组件之间同一状态的共享问题

不同组件的行为需要变更同一状态

采用集中式存储管理应用的所有组件的状态

组件通讯 => 共享数据更新 => 数据共享,数据持久化

适用范围: 大项目

2.Vuex的设计原理

在这里插入图片描述

3.Vuex的使用

(1)src目录下面新建一个vuex的文件夹

(2)vuex 文件夹里面新建一个store.js

(3)安装vuex

cnpm install vuex --save

(4) 在刚才创建的store.js引入vue 引入vuex 并且use vuex

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

(5) 定义数据

/*1.state在vuex中用于存储数据*/
var state={

    count:1
}

(6) 定义方法

/*mutations里面放的是方法,方法主要用于改变state里面的数据*/
var mutations={

    incCount(){
		++state.count;
    }
}

(7) 优点类似计算属性

/*改变state里面的count数据的时候会触发 getters里面的方法 获取新的值 (基本用不到)*/
var getters= {
   
    computedCount: (state) => {
	return state.count*2
    }
}

(8) Action 基本没有用
Action 类似于 mutation,不同在于:

Action 提交的是 mutation,而不是直接变更状态。
Action 可以包含任意异步操作。

var actions= {
    incMutationsCount(context) {    /*因此你可以调用 context.commit 提交一个 mutation*/
      
      
	context.commit('incCount');    /*执行 mutations 里面的incCount方法 改变state里面的数据*/


    }
}

(7) 暴露

const store = new Vuex.Store({
   state,
   mutations,
   getters,
   actions
})
	
export default store;

3.组件里面使用Vuex

(1) 引入store

 import store from '../vuex/store.js';

(2) 注册

 export default{
	data(){
	    return {               
	       msg:'我是一个home组件',
		   value1: null,
	     
	    }
	},
	store,
	methods:{
	    incCount(){
	      
		this.$store.commit('incCount');   /*触发 state里面的数据*/
	    }

	}
}

(3) 获取state里面的数据

this.$store.state.数据

(4) 触发 mutations 改变 state里面的数据

this.$store.commit('incCount');

(5) 触发 actions里面的方法

this.$store.dispatch('incCount');

(6) 获取 getters里面方法返回的的数据

{{this.$store.getters.computedCount}}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值