出错原因
*使用 Vant 组件库的 tabber,它在切换的时候会改变绑定的 active 的值,而 active 是从 store 中获取的值,不能直接修改。
<van-tabbar v-model="active" @change='tabChange'>
<van-tabbar-item name="home" icon="home-o">首页</van-tabbar-item>
<van-tabbar-item name="search" icon="search">会员</van-tabbar-item>
<van-tabbar-item name="friends" icon="friends-o">购物车</van-tabbar-item>
<van-tabbar-item name="setting" icon="setting-o">搜索</van-tabbar-item>
</van-tabbar>
- 以下是报错部分代码
computed: {
......mapState({'active'}),
},
methods:{
tabChange(active){
this.$store.commit('tabChange',{active})
}
}
- 报错代码是可以调用 store 中的 tabChange 并改变 active 的值的,但是仍然会报错。
- 如果直接在 computed 中返回 active ,虽然双向绑定,但是是不会修改 active 的值的。同样也会报 no setter 错误。
解决
computed: {
active: {
get(){
return this.$store.state.active;
},
set(val){
this.$store.commit('tabChange',{val});
}
}
},
解决办法,给绑定值 active 添加 set来调用修改值函数。