vuex有哪几种属性?
State、Getter、Mutation 、Action、Module 五种
state => vuex的基本数据,存储变量的地方,在组件内一般用computed去接收state
getters => 和 vue 中的 computed 类似 , 都是用来计算 state 然后生成新的数据 ( 状态 ) 的
mutations => 提交更改数据的方法,同步!通过store.commit(‘方法名’,参数)触发
actions => 包裹mutations,使之可以异步。通过store.dispatch(‘方法名’)触发
modules => 模块化Vuex,便于管理
mapState是state的语法糖,初级用法:
computed:{
mapState({
fn1(){ return ...},
fn2(){ return ...},
fn3(){ return ...}
})
}
高级用法:
computed:{
...mapState({
id: state => state.common.id
})
}
vuex的State特性是?
stae就是存放数据的地方,类似一个仓库 , 特性就是当mutation修改了state的数据的时候,他会动态的去修改所有的调用这个变量的所有组件里面的值( 若是store中的数据发生改变,依赖这个数据的组件也会发生更新 )
vuex的Getter特性是?
getter用来获取数据,mapgetter经常在计算属性中被使用
vuex的Mutation特性是?
Action 类似于 mutation,不同在于:
Action 提交的是 mutation,而不是直接变更状态。
Action 可以包含任意异步操作
3.不使用Vuex会带来什么问题
可维护性会下降,想修改数据要维护三个地方;
可读性会下降,因为一个组件里的数据,根本就看不出来是从哪来的;
增加耦合,大量的上传派发,会让耦合性大大增加,本来Vue用Component就是为了减少耦合,现在这么用,和组件化的初衷相背。
4.Vue.js中ajax请求代码应该写在组件的methods中还是vuex的actions中?
一、如果请求来的数据是不是要被其他组件公用,仅仅在请求的组件内使用,就不需要放入vuex 的state里。
二、如果被其他地方复用,这个很大几率上是需要的,如果需要,请将请求放入action里,方便复用,并包装成promise返回,在调用处用async await处理返回的数据。如果不要复用这个请求,那么直接写在vue文件里很方便。