1***@qq.com
1***@qq.com
  • 发布:2020-04-17 11:02
  • 更新:2020-06-22 16:08
  • 阅读:4692

uni-app js文件调用store.commit,在vue页面中mapState未更新

分类:uni-app

uni-app项目 大部分是nvue页面

在一个request的全局拦截的地方,监听后台返回的code,根据code的值做退出登录,改变store里面用户信息的操作

js文件调用store.commit("RECORD_USER_INFO",{}),然后通过打印store.state.userInfo能够得到变化后的值

但是在nvue页面中通过mapState(["userInfo"])绑定的userInfo并没有实时更新,我用watch监听了userInfo,在handler也没发现变化。
同样的我在nvue页面中通过mapMutations(['RECORD_USER_INFO'])绑定,然后调用this.RECORD_USER_INFO({}),其他页面就能监听到这个变化。

这个是官方的bug吗?各位有没有合适的解决方案呢

config.js

import store from "@/store"  

function loginOut (config) {  
  uni.removeStorageSync('token')  
  store.commit("RECORD_USER_INFO",{})  
  console.log(store.state.userInfo)  
}  

.nvue

import { mapState } from 'vuex';  

computed: {  
   ...mapState(['userInfo'])  
},  
  watch:{  
    userInfo:{  
      deep:true,  
      handler:function(newval,oldVal){  
        console.log(newval,oldVal)  
      }  
    }  
  },

.nvue

import { mapMutations} from 'vuex';  

methods: {  
      ...mapMutations(["RECORD_USER_INFO"]),  
     loginOut(){  
        this.RECORD_USER_INFO({})  
     }  
}

mutations.js

const mutaions = {  
  //用户信息  
  [RECORD_USER_INFO]: function(state, paylod) {  
    let _userInfo = {}  
    if(!paylod.user_id){  
      _userInfo = {  
        ...paylod,  
        currency:1,  
        colorType:1,  
        currencyUnit:"USDT",  
        currencySymbol:"$"  
      }  
    }else{  
      _userInfo = {  
        ...paylod,  
        currencyUnit:paylod.currency===2?'CNY':'USDT',  
        currencySymbol:paylod.currency===2?'¥':'$'  
      }  
    }  
    uni.setStorageSync('userInfo',_userInfo)  
    state.userInfo = _userInfo  
    console.log(state.userInfo)  
  },  
}
2020-04-17 11:02 负责人:DCloud_uni-ad_HDX 分享
已邀请:
6***@qq.com

6***@qq.com

遇到了一样的问题,请问你解决了吗

  • 1***@qq.com (作者)

    没用这种方案了,用的storage,页面onshow的时候获取一次这个值

    2020-06-04 20:33

7***@qq.com

7***@qq.com

import store from "@/store"
我为啥这样获取不到store

  • 1***@qq.com (作者)

    @路径好像要自己配置

    2020-06-23 16:13

  • 7***@qq.com

    回复 1***@qq.com: 不用自己配置。。。我这个问题是es6 循环加载问题。。傻傻的不知道,哈哈

    2020-06-23 21:51

该问题目前已经被锁定, 无法添加新回复