Vuex
作用
用于保存全局共享的数据
state
- 用于存放全局共享的数据
-
用法
new Vuex.Store({ state: { 属性名: 属性值 } })
-
在组件里面 访问 state 里面的数据
第一种:this.$store.state.属性名
第二种:需要在 组件里面 使用 按需导入 得到 mapState 将mapState 映射为当前组件的计算属性
``` import { mapState } from 'vuex' ...mapState(['属性名']) ```
mutation
-
用于修改 state 里面的数据
-
语法
mutations: { 函数名(state, payload) { // state 就代表了 state 对象 // state.属性名 可以访问 state 对象里面的属性 state.属性名 = payload } }
-
在组件里面 访问
使用 this.$store.commit('函数名', 参数)
需要在 组件里面 使用 按需导入 得到 mapMutations 映射为当前组件的 methods
``` import { mapMutations } from 'vuex' ...mapMutations(['函数名']) ```
actions
-
作用:用于发送异步请求
-
语法
actions: { 函数名(context, payload) { // context 表示 new Vuex.Store 实例对象 context.commit('mutations里面的函数', paload) } }
-
在组件里面访问
this.$store.dispatch('函数名', 参数)
需要在 组件里面 使用 按需导入 得到 mapActions 映射为当前组件的 methods
``` import { mapActions } from 'vuex' ...mapActions (['函数名']) ```
getters
-
作用:相当于 组件 内部的 计算属性
-
语法
getters: { 函数名(state) { // state 就是 代表 state 对象 } }
-
在组件里面访问
this.$store.getters.属性
需要在 组件里面 使用 按需导入 得到 mapGetters 映射为当前组件的计算属性
``` import { mapGetters } from 'vuex' ...mapGetters (['函数名']) ```
modules
- 作用:用于将 vuex 划分成 模块
-
语法:
创建一个 xxxx.js 文件 文件里面 有4个核心成员
``` export default { namespaced: true, state: () => ({}), mutations: {}, actions: {}, getters: {} } ```
-
在 index.js 里面 导入
import 模块对象 from '模块的路径'
new Vuex.Store({
modules: {
模块名: 模块对象
}
})
-
开启了 命名空间 以后 访问 模块里面的成员
-
推荐使用
辅助函数
的方法访问 state 里面 ...mapState('模块名', ['属性名'])
访问 mutations 里面的 函数 ...mapMutations('模块名', ['函数名'])
this.$store.commit('模块名/函数名')
访问 actions 里面的函数 ...mapActions('模块名', ['函数名'])
this.$store.dispatch('模块名/函数名')
访问 getters 里面的计算属性 ...mapGetters('模块名', ['函数名'])