## 首先要知道vuex是什么
是实现组件全局状态数据管理的一种机制,可以方便的实现组件之间数据的共享
## 先说state在组件中如何用
1.直接在 computed:{
list(){//全局数据名称
this.$store.state.list
}
}
2.从vuex 中按需导入mapState 函数
import {mapState} from "vuex"
computed计算属性
computed:{
...mapState(['name'])
}
## mutation首先这个方法用来改变state里面的方法的只能通过mutation变更store数据,不可以直接操作store中的数据,里面有个方法commit用来触发mutation里面方法用的
在组件中使用
1.methods:{//触发mutation
abc(){
//list是mutation里面的方法
this.$store.commit('list',)
}
}
2.现在组件中引用 import {mapMutations} from 'vuex'
methods:{
...mapMutations(['name','ooo'])
}
## action和mutation功能大致相同,不同之处在与action提交的是mutation,而不是直接变更状态,可以包含异步操作,用于处理异步任务,dispatch用来触发action里面的方法,注意 action方法 返回的是一个Promise对象
在组件中使用
1.methods:{
abc(){
//name是actions里面的方法
this.$store.dispatch('name')
}
}
2.现在组件中引用 import {mapActions} from 'vuex'
methods:{
...mapAction(['addAsync'])
}
## getter从基本数据state派生的数据,相当于state的计算属性,具有返回值的方法会返回一个新数据,不会影响到state里面的老数据store中的数据发生变化.getter的数据也会跟着变化
用法
1.methods:{
this.$store.getters.list
}
2.
import {mapGetters} form 'vuex'
computed:{
...mapGetters(['list'])
}
## modules模块化vuex
modules 可以让每一个模块拥有自己的state,mutation,action,getters,使得结构非常清晰,方便管理
由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store 对象就有可能变得相当臃肿。
为了解决以上问题,Vuex 允许我们将 store 分割成模块(module)。每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块——从上至下进行同样方式的分割:
vuex是什么
最新推荐文章于 2023-05-26 20:31:52 发布