VUEX是什么?
vuex是vue框架中的状态机,通俗一点vuex是个专门管理数据的仓库。
VUEX主要有哪些属性?
vuex主要有5个属性,state、getter、action、mutation、module
state是什么?
vuex中的state里面存放数据源,state里面存放的数据是响应式的,如果仓库里的数据发生变化,那依赖这个数据的组件也会发生更新。
怎么做到的??????????
通过mapState把state映射到组件中的计算属性(computed)中,仓库的数据一变,组件映射的数据也会跟着一起变。
getter是什么?
vuex中的getter可以对state中的数据进行处理,相当于state的计算属性,同样可以使用vuex的mapgetter将getter映射到组件的computed中。
mutation是什么?
在vuex中想要更改state中数据的状态的唯一方法就是提交mutation,例如我们要更新更改state中的数据就要使用到mutation,但mutation是同步的,当我们需要进行异步操作的话我们需要使用到action属性。
action是什么?
action的目的也是更改state的状态,不一样的是,action提交的就是mutation,但实现了异步操作。总而言之,同步的话可以直接提交mutation,异步就用action提交mutation。
怎么使用mutation和action??
可以用mapAction将写好的方法映射到组件中的method中
小结
state相当于组件的data
getter相当于数据的计算属性
mutation和action相当于用来更改数据的方法
既然组件有data,有计算属性,也能写方法改数据,为什么要用vuex?
从组件角度来看,如果组件要管理要维护的数据不多,我们可以不用vuex,但需要管理的数据一多,组件代码就很杂乱(毕竟组件还要写组件自身的内容),再者如果两个组件都需要同一个数据,那在两个组件里面就要写两次。所以不如把数据放到仓库里管理,组件里写组件的内容,管理数据交给VUEX来完成。在后期对数据进行维护的时候我们只需要到仓库里修改就行。
总结三点:
如果不用vuex,
1.可维护性会下降,想修改数据要维护三个地方;
2.可读性会下降,因为一个组件里的数据,根本就看不出来是从哪来的;
3.耦合度会增加;