解決mpvue + vuex 開發(fā)微信小程序vuex輔助函數(shù)mapState、mapGetters不可用問題
前言
最近博主正在用微信小程序開發(fā)一款網(wǎng)上商城系統(tǒng)。恰好趕上了美團開源的小程序開發(fā)框架mpvue。該框架繼承了vue.js的特性,用起來還是蠻爽的。然后在開發(fā)中,數(shù)據(jù)倉庫這塊懵逼了, 引入的vuex的輔助函數(shù)mapState、mapGetters、mapMutations、mapActions等怎么就不能用呢。苦惱之際打開D盤,一番愉悅之后,終于想通啦…
問題分析
•vuex輔助函數(shù)
首先簡單說一下vuex的輔助函數(shù)mapState、mapGetters、mapMutations、mapActions,我們在子組件經(jīng)常用到很多狀態(tài)量,為了避免過分的使用this.$store.state.xxx、this.$store.dispatch導致的冗余問題,我們用輔助函數(shù)來使代碼變得簡潔易讀。注意了,它就相當于語法糖似的,實際上還會映射為this.$store.吧啦吧啦
•vue-cli + vuex項目
在一般的vue-cli + vuex項目中,主函數(shù) main.js 中會將 store 對象提供給 “store” 選項,這樣可以把 store 對象的實例注入所有的子組件中,從而在子組件中可以用this.$store.state.xxx、this.$store.dispatch 等來訪問或操縱數(shù)據(jù)倉庫中的數(shù)據(jù)
new Vue({ el: '#app', store, router, template: '<App/>', components: { App } })
•mpvue + vuex項目
注意了,在mpvue + vuex項目中,很遺憾不能通過上面那種方式來將store對象實例注入到每個子組件中(至少我嘗試N種配置不行),也就是說,在子組件中不能使用this.$store.吧啦吧啦,從而導致輔助函數(shù)不能正確使用。這個時候我們就需要換個思路去實現(xiàn),要在每個子組件中能夠訪問this.$store才行。
解決辦法
這里呢,博主使用的方法很簡單,既然我們需要在子組件中用this.$store 訪問store實例,那我們直接在vue的原型上添加$store屬性指向store對象不就行啦,抱著試一試的心態(tài)寫了下面這行代碼。
Vue.prototype.$store = store
這樣一來我們在子組件中便可以用this.$store訪問對象。確實也解決了輔助函數(shù)不能使用的問題。
總結(jié)
以上所述是小編給大家介紹的解決mpvue + vuex 開發(fā)微信小程序 vuex輔助函數(shù)mapState、mapGetters不可用問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
解決vue中axios設(shè)置超時(超過5分鐘)沒反應的問題
這篇文章主要介紹了解決vue中axios設(shè)置超時(超過5分鐘)沒反應的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09