記一次vuex的mapGetters無效原因及解決
vuex的mapGetters無效原因
報錯是(error during evaluation),見下圖。
代碼大概是下面這樣,
import store from './store.js' computed: { ...mapGetters('project', [ 'isOpenSupplyNeed', ]), a(){ return store.getters['project/isOpenSupplyNeed'] } },
然后就是在vue-devtools面板里看到這樣的報錯
然而另一個屬性a,是有正確的值的。
后來下斷點看報錯,發(fā)現(xiàn)了問題。
this.$store是undefined。
因為在new Vue的時候,沒有將store注入進(jìn)來,導(dǎo)致vuex里的代碼this.$store獲取不到。
結(jié)論就是如果用到這些輔助函數(shù),一定要保證new Vue的時候注入store。
vuex mapGetters語法報錯(Unexpected token)
在使用vuex2的mapGetters 和 mapActions 的方法時,借助 stage2 的 Object Rest Operator 特性,可以寫出下面代碼:
computed: { ? ? ...mapGetters([ ?// … 三個點,在框架語言里,就是傳對象 ? ? ? ? 'hadChannels', ? ? ? ? 'currentChannel' ? ? ]) }
但是在借助babel編譯轉(zhuǎn)換時發(fā)生了報錯: BabelLoaderError: SyntaxError: Unexpected token 。
搜索一番,結(jié)果是babel 沒有解析成功,看來是 babel的配置為問題
原來的 .babelrc
{ ? "presets": [ ? ? ["env", { ? ? ? "modules": false, ? ? ? "targets": { ? ? ? ? "browsers": ["> 1%", "last 2 versions", "not ie <= 8"] ? ? ? } ? ? }], ? ? "stage-2" ? ], ? "plugins": ["transform-vue-jsx", "transform-runtime"] }
解決方案
接著在babel的issues中搜索這樣的報錯,原來是我babel預(yù)置的轉(zhuǎn)換器是 babel-preset-es2015 ,并不能轉(zhuǎn)換 Object Rest Operator 特性。
1.安裝 Object Rest Operator 的babel插件 npm i -D babel-plugin-transform-object-rest-spread 。
babel: { presets: ["es2015"], plugins: [ ? ? "transform-runtime", ? ? "transform-object-rest-spread"] }
2. 安裝整個stage2的預(yù)置器 npm i -D babel-preset-stage-2
babel: { presets: ["stage-2"], plugins: [ ? ? "transform-runtime" ? ? ] }
安裝、配置都完成以后 ,重啟webpack,就不會再有報錯了。
后記:還有人修改了eslint配置中對 Object Rest Operator 的支持解決了問題,不過跟我這種不一樣先記下來。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Vue3使用Vuex之mapState與mapGetters詳解
- vuex中...mapstate和...mapgetters的區(qū)別及說明
- vue3.0使用mapState,mapGetters和mapActions的方式
- vuex 中輔助函數(shù)mapGetters的基本用法詳解
- vuex2中使用mapGetters/mapActions報錯的解決方法
- vuex中的 mapState,mapGetters,mapActions,mapMutations 的使用
- 詳解vuex中mapState,mapGetters,mapMutations,mapActions的作用
- Vue Getters和mapGetters的原理及使用示例詳解
相關(guān)文章
vue使用Google Recaptcha驗證的實現(xiàn)示例
我們最近的項目中需要使用谷歌機(jī)器人驗證,所以就動手實現(xiàn)一下,本文就來詳細(xì)的介紹一下vue Google Recaptcha驗證,感興趣的可以了解一下2021-08-08使用vue官方提供的模板vue-cli搭建一個helloWorld案例分析
這篇文章主要介紹了用vue官方提供的模板vue-cli搭建一個helloWorld案例,需要的朋友可以參考下2018-01-01Vue(定時器)解決mounted不能獲取到data中的數(shù)據(jù)問題
這篇文章主要介紹了Vue(定時器)解決mounted不能獲取到data中的數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07