为什么要用vuex,而不是直接使用全局变量
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到了 Vue 的官方调试工具 devtools extension,提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。
每一个 Vuex 应用的核心就是 store(仓库),它包含着你的应用中大部分的状态 (state)。
状态管理有5个核心:state、getter、mutation、action、module
Vuex 和单纯的全局对象有以下两点不同:
1.Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。
2.不能直接改变 store 中的状态。组件改变state的唯一方法是通过显式地提交mutation。这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。【若是异步事务或者是大批量的同步事务要改变state,第一步组件需要先去调用(dispatch)action,第二步action要去调用(commit)mutation,第三步利用mutation改变数据;若是同步事务,第一步组件调用(commit)mutation,第二步利用mutation改变数据;】
1)vuex用于做状态管理,主要是应用于vue.js中管理数据状态的一个库,即把项目中公用数据放到一个公用存储空间去存储,某一个组件改变这个公用数据,其他组件就能感知到。
2)vuex由统一的方法修改数据,全局变量可以任意修改。
3)全局变量多了会造成命名污染,vuex不会,同时解决了父组件与孙组件,以及兄弟组件之间通信的问题。
- 用全局变量初期还好,如果项目复杂你就要对这个全局变量进管理优化,更方便的调用,直接修改数据就可以渲染视图等等,要考虑如何更好地在组件外部管理状态。
- vuex 具体应用在哪取决于项目的规模以及具体的业务场景,可能是为了解决多层嵌套组件之间的通信问题,或是为了更好地管理应用中错综复杂的状态关系。