在使用 mpvue
+ vuex
开发微信小程序时,可能会遇到 vuex
辅助函数 mapState
、mapGetters
不可用的问题。这是因为 mpvue
框架在编译时将 store
对象注入到每个组件的 data
属性中,而在 wxs
中无法访问 data
中的对象,因此会导致 mapState
、mapGetters
函数无法正常使用。
要解决这个问题,可以使用一种另类的方法,对于每个需要使用 mapState
、mapGetters
的组件,手动将 store
对象注入到其 computed
属性中。具体步骤如下:
- 在
store
中定义 state 和 getters
```javascript
// store.js
export default new Vuex.Store({
state: {
count: 0
},
getters: {
doubleCount (state) {
return state.count * 2
}
}
})
```
- 在组件中手动注入
store
对象
```html
Count: {{ count }}
Double count: {{ doubleCount }}
```
在这个组件中,我们使用 mapState
和 mapGetters
函数将 count
和 doubleCount
映射到了组件的 computed
属性中。同时,我们在 computed
中手动将 store
对象注入到了组件的计算属性中,这样就能够在 wxs
中访问到 store
对象,从而解决了辅助函数不可用的问题。
当然,以上的方法也可以通过引入插件mpvue-vuex
来解决,使用插件后,在 wxs
中就可以直接访问 store
对象。示例代码如下:
```javascript
// main.js
import Vue from 'vue'
import Vuex from 'vuex'
import MpvueRouterPatch from 'mpvue-router-patch'
import store from '@/store'
import mpvueVuex from 'mpvue-vuex'
Vue.prototype.$store = store
Vue.use(Vuex)
Vue.use(MpvueRouterPatch)
Vue.use(mpvueVuex)
const app = new Vue({
store,
mpType: 'app',
...App
})
app.$mount()
```
在这个示例中,我们使用了 mpvueVuex
插件,通过调用 Vue.use(mpvueVuex)
的方式将插件注入到了 Vue
容器中。这样,就能够在每个组件中使用 this.$store
来访问 store
对象,而无需手动注入。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题 - Python技术站