## vuex基本使用方法

1.安装配置vuex,版本依赖

vue2的项目使用vuex3,vue3的项目使用vuex4
npm install vuex --save 这个指令默认安装Vuex4
npm install vuex@3 @代表安装指定版本的Vuex3

2.创建 store/index.js 文件

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  // 全局都可以使用的数据
  state: {
  },
  // getters, 相当于对state里的数据进行运算得到的数据 类似于computed对于data的处理
  getters: {
  },
  // mutations,定义修改state里面数据的方法
  mutations: {
  },
  // actions用法--actions中的方法触发mutations中的方法从而改变state里的数据;
  // 除此之外,如果需要异步操作,就必须在actions中执行
  actions: {
  },
  // 将同一类型的数据组合成一个模块
  modules: {
  }
})

3、Vuex的基本使用

Vuex实现了一个单向数据流,在全局拥有一个State存放数据,所有修改State的操作必须通过Mutation进行,Mutation的同时提供了订阅者模式供外部插件调用获取State数据的更新。所有异步接口需要走Action,常见于调用后端接口异步获取更新数据,而Action也是无法直接修改State的,还是需要通过Mutation来修改State的数据。最后,根据State的变化,渲染到视图上。Vuex运行依赖Vue内部数据

1,$store.state

通过这个方式,能直接使用state里的数据

    <i>msg:{{$store.state.msg}}</i>
    <p>num:{{$store.state.num}}</p>

2、mutations

要想修改state的数据必须通过mutations

  在store/index.js中配置 
  // mutations,定义修改state里面数据的方法
  mutations: {
    updateMutationMsg (state) {
      state.msg = '修改之后的msg数据'
    }
  },
  //在  .vue的文件中使用
  methods: {
    updateStoreMsg () {
    // 组件methods通过调用vuex实例的commit方法触发mutations中的方法修改msg
      this.$store.commit('updateMutationMsg')
    }
  },

3,action

所有异步接口需要走Action,然后调用mutations中的方法,更改state中的数据

配置

  actions: {
    // actions方法中触发mutations中的方法
    async actionUpdateNum (c, val) {
      const res = await axios.get('http://47.100.227.25:3000/books/queryall')
      // 触发vuex实例mutations中的指定方法updateMutaNum
      c.commit('updateMutaNum', res[0].id)
    }
  }

使用

  methods: {
    // 组件methods中通过vuex实例的dispatch方法触发vuex中actions里的方法,
    updateNum (val) {
      this.$store.dispatch('actionUpdateNum', val)
    }
  },

4.getters

  // getters, 相当于对state里的数据进行运算得到的数据 类似于computed对于data的处理,需要返回值
  getters: {
    numDouble (state) {
      return state.num * 2
    }
  },

5,modules

将相关的数据处理作为一个模块

  modules: {
    hh: msgModule
  }
  
  
const msgModule = {
   // 全局都可以使用的数据
  state: {
  },
  // getters, 相当于对state里的数据进行运算得到的数据 类似于computed对于data的处理
  getters: {
  },
  // mutations,定义修改state里面数据的方法
  mutations: {
  },
  // actions用法--actions中的方法触发mutations中的方法从而改变state里的数据;
  // 除此之外,如果需要异步操作,就必须在actions中执行
  actions: {
  },
  // 将同一类型的数据组合成一个模块
  modules: {
  }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容