VueX的介绍和使用

用于解决:

  1. vuex解决了组件之间同一状态的共享问题 (解决了不同组件之间的数据共享)
  2. 组件里面数据的持久化

官方介绍:

Vuex 是一个专为 Vue.js 设计的状态管理模式


vuex解决了组件之间同一状态的共享问题。当我们的应用遇到多个组件共享状态时,会需要:

多个组件依赖于同一状态。传参的方法对于多层嵌套的组件将会非常繁琐,并且对于兄弟组件间的状态传递无能为力。这需要你去学习下,vue编码中多个组件之间的通讯的做法。
来自不同组件的行为需要变更同一状态。我们经常会采用父子组件直接引用或者通过事件来变更和同步状态的多份拷贝。


以上的这些模式非常脆弱,通常会导致无法维护的代码。来自官网的一句话:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。

它采用集中式存储管理应用的所有组件的状态。这里的关键在于集中式存储管理。这意味着本来需要共享状态的更新是需要组件之间通讯的,而现在有了vuex,就组件就都和store通讯了。问题就自然解决了。


这就是为什么官网再次会提到Vuex构建大型应用的价值。如果您不打算开发大型单页应用,使用 Vuex 可能是繁琐冗余的。确实是如此——如果您的应用够简单,您最好不要使用 Vuex。

注意

小项目不建议用vuex

vuex的引入和方法:

  1. src目录下面新建一个vuex的文件夹
  2. vuex 文件夹里面新建一个store.js
  3. 安装vuex

cnpm install vuex --save

  1. 在刚才创建的store.js引入vue 引入vuex 并且use vuex
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)
  1. state 定义数据
/*state在vuex中用于存储数据*/
	var state={
	  count:1
	}
  1. mutations 定义方法

mutations里面放的是方法,方法主要用于改变state里面的数据

var mutations={
	incCount(){
        ++state.count;
		    }
	}
  1. getters 有点类似计算属性

改变state里面的count数据的时候会触发 getters里面的方法 ,获取新的值 (基本用不到)

var getters= {   
     computedCount: (state) => {
     return state.count*2
   }
   }
  1. actions 基本没有用

actions类似于 mutation,不同在于:

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

var actions= {
     /*因此你可以调用 context.commit 提交一个 mutation*/
	incMutationsCount(context) {    
	 /*执行 mutations 里面的incCount方法 改变state里面的数据*/
	 context.commit('incCount');   
      }
   }
  1. 暴露store
const store = new Vuex.Store({
		    state,
		    mutations,
		    getters,
		    actions
		})

export default store;

组件里面使用vuex:

  1. 引入 store
import store from '../vuex/store.js';
  1. 注册
 export default{
	data(){
			return {               
				msg:'我是一个home组件',
				value1: null,   
				    }
				},
				store,
				methods:{
				    incCount(){
				       /*触发 state里面的数据*/
					   this.$store.commit('incCount');   
				    }
				}
			 }
  1. 获取state里面的数据
this.$store.state.数据
  1. 触发 mutations 改变 state里面的数据
this.$store.commit('incCount');
  1. 触发 actions里面的方法
this.$store.dispatch('incCount');
  1. 获取 getters里面方法返回的的数据
{{this.$store.getters.computedCount}}  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

启四

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值