vue2项目,vuex的安装与配置

一、介绍
官方解释:vuex是一个专为vue.js应用程序开发的 状态管理模式。它采用集中式存储管理应用的所有的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

我的理解:可以理解为是 全局变量

安装:

npm install vuex --save

接着在src下,新建一个store目录,store里再新建index.js和module目录,module目录里再存放你自己定义的模块(不懂没关系,博主下面会有代码让你复制粘贴)
我的目录:
在这里插入图片描述

store/index.js文件:

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

import specimen from "./modules/specimen.js"

Vue.use(Vuex)

const state = {}

const getters = {

}

const mutations = {
	
}

const actions = {
	
}

export default new Vuex.Store({
  state,
  getters,
  mutations,
  actions,
  modules: {
    specimen  // specimen模块命名为specimen,要在specimen.js声明namespaced: true才有用
  }
})

store/modules/specimen.js文件:

/**
 * 获取参数:this.$store.state.specimen.num
 * 
 * 调用方法:
 * import { mapState, mapMutations } from 'vuex'
 * 
 * data() {
 *    return { num: this.$store.state.specimen.num }
 * },
 * computed: {
	  ...mapState({
	    num: state => state.specimen.num
	  })
   },
 * mounted() {
    console.log("message", this.num)  // 0
    this.setNum(20)
    console.log("message", this.$store.state.specimen.num)  // 20
  },
 * methods: {
    ...mapMutations({
      setNum: 'specimen/setNum'
    })
  }
 * 
*/
export default {
  namespaced: true,
  state: {
    num: 0  // ...mapState({ num: state => state.specimen.num}),
  },
  getters: {
  	getAge(state) {  // ...mapGetters({ getAge: 'specimen/getAge' })
  		return `${state.num}`
	}
  },
  mutations: {
    setNum(state, num) {  // ...mapMutations({ setNum: 'specimen/setNum' })
      state.num = num
    }
  },
  actions: {
	getUserInfo(context) {  // ...mapActions({ getUserInfo: 'specimen/getUserInfo' })
		setTimeout(() => {
            context.commit('setNum', 10)
        }, 500)
	}
  }
}

然后在main.js中引入store文件夹,main.js文件:

import store from "./store"

new Vue({
  el: '#app',
  router,
  store,  // 这里记得要加上
  components: { App },
  template: '<App/>'
})

然后就是在vue文件中使用store里的变量,与调用store里的方法啦:

import { mapState, mapMutations } from 'vuex'

export default {
  name: "Specimen",
  data() {
  		return {
  			num: this.$store.state.specimen.num
  		}
  },
  mounted() {
    console.log("message", this.num)  // 0
    this.setNum(20)
    // this.$store.commit('specimen/setNum', 20)  // 也可以这样调用store中的specimen模块的setNum方法
    console.log("message", this.$store.state.specimen.num)  // 20
  },
 methods: {
    ...mapMutations({  // 引入store中的specimen模块的setNum方法
      setNum: 'specimen/setNum'
  	})
  }
}

最后看一下浏览器的打印结果:
在这里插入图片描述

补充内容

控制台提示:export 'watch' was not found in 'vue'警告
解决的方案:

  • 如果你的vue版本是 2.X ,将vuex升到 3.X.X 就能够解决
    npm install --save vuex@3.6.2
  • 如果你的vue版本是 3.X ,将vuex升到 4.X.X 就能够解决
    npm install --save vuex@4.0.0

完美收工,嘿嘿!都看到这里了,如果觉得对你有所帮助,就给博主点个赞吧,谢谢各位啦~~

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值