1、vuex是什么?怎么使用?哪种功能场景使用它?
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。用来读取的状态集中放在store中; 改变状态的方式是提交mutations,这是个同步的事物; 异步逻辑应该封装在action中。
在main.js引入store,注入。新建了一个目录store,….. export 。
场景:单页应用中,组件之间的状态、音乐播放、登录状态、加入购物车
2、vuex有哪几种属性
state: Vuex 使用单一状态树,即每个应用将仅仅包含一个store 实例,但单一状态树和模块化并不冲突。存放的数据状态,不可以直接修改里面的数据。
getters: 类似vue的计算属性,主要用来过滤一些数据。
mutations: mutations定义的方法动态修改Vuex 的 store 中的状态或数据。
action: actions可以理解为通过将mutations里面处里数据的方法变成可异步的处理数据的方法,简单的说就是异步操作数据。view 层通过 store.dispath 来分发 action。
modules: 项目特别复杂的时候,可以让每一个模块拥有自己的state、mutation、action、getters,使得结构非常清晰,方便管理。
3、不使用Vuex会带来什么问题
可维护性会下降,想修改数据要维护三个地方
可读性会下降,因为一个组件里的数据,根本就看不出来是从哪来的
增加耦合,大量的上传派发,会让耦合性大大增加,本来Vue用Component就是为了减少耦合,现在这么用,和组件化的初衷相背。
4、Vue.js中ajax请求代码应该写在组件的methods中还是vuex的actions中?
两种情况:
(1)如果ajax获取到的数据没有在其他组件中复用,那么完全可以写到methods里不用做缓存。
(2)如果获取到的数据需要在多个地方复用那就写到actions中,可以把这些ajax请求封装到一个.js文件中,通过actions来分发需要调用的请求,通过mutations来保存数据。
5、Vuex中如何异步修改状态
通过actions来提交mutations,用dispatch来触发actions。
6、Vuex中actions和mutations的区别
mutations是同步任务,而actions可以提交mutations的方式执行异步操作