标签:异步 vue res getters 自我 aciton getMenuData setMenuData store
一、需求:
我需要从后台中获取菜单列表在路由守卫中进行限制。
二、遇到的问题:
action中setMenuData的方法如下:
actions: { setMenuData(context){ getMenu().then(res => { console.log("在状态管理器中的异步方法执行接口",res) context.commit('SET_MENU',res.data.data) }) } },
路由守卫如下:
router.beforeEach((to, from, next) => { store.dispatch("setMenuData").then(res=>{ console.log("====",store.getters.getMenuData) addRoutes(store.getters.getMenuData) }) } )
state.menuList一直是空的,应该有数据才是期望的值
三、解决方案:
router.beforeEach((to, from, next) => { store.dispatch("setMenuData").then(res=>{ setTimeout(()=>{ console.log("等待1秒钟获得数据",store.getters.getMenuData) addRoutes(store.getters.getMenuData) if (to.matched.length == 0) { router.push(to.path) } next() },1000) }) } )
在回调函数中增加计时器,计时器是个异步方法,等待一秒钟,即输出了我想要的数据。
四、自我总结
像这种情况就是异步情况,action里面可以放置一些异步的方法,例如:数据请求、计时器等。
标签:异步,vue,res,getters,自我,aciton,getMenuData,setMenuData,store 来源: https://www.cnblogs.com/zangaoY/p/16443415.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。