1.首先是版本问题,vue2对应的是vuex@3,vue3对应vuex@4,这个可以在package.json里面看
"vue": "^2.5.2",
"vue-router": "^3.0.1",
"vuex": "^3.6.2"
如果版本对应不上的话要在对应项目内安装对应版本
2.其次就是main.js的引入和大小写问题
import store from './store/index';
在main.js里面引入store模块时不能写成Store,以及要在根组件中注册store
3.再而就是index.js中在引入Vuex时路径项要小写(或者说在哪个文件里引入vuex都要注意这个)
import Vuex from 'vuex'
以及
export default new Vuex.Store({
strict: process.env.NODE_ENV !== 'production', //在非生产环境下,使用严格模式
modules: {
user: user,
}
});
4.最后就是引入功能模块时路径一定要写对!!!!本人就是这个错的,一直显示找不到模块,上网查了一圈最后碰巧发现自己路径错了,导致一用mapActions就错
// 这里把moudle拼写错了找了两天
import user from './moudle/user'
最后的最后
store引入成功后,如果还是显示mutations或者actions里面functions is not defined 的话,还要看一下mutations和actions你是否加了s要不然确实会显示读不到(store的信息可以console.log(this.$store)在控制台里面读取具体信息,如果store都没有就要去找引入store的问题参考上面,如果是mutations或者actions没有的话就看这段文字看有没有对应的错误),以及如果你的...mapActions( {user:"user/方法"}),是这样用的话代表是将this.user()替换成this.$store.commit('方法'),也就是你得this.user(参数)才能用到具体方法,这里还需要注意actions里定义的方法名才是‘/’后面的方法名,关于mapActions的使用有很多种写法,有些是需要空间命名的有些不需要,具体是看有没有在功能模块(我这里是user.js)里面加namespaced: true。
本人新手一枚,发这个也是记录一下因为自己写代码马虎被毒打了想记录一下,如有不对请多包涵,也欢迎指正