一、需求:

我需要从后台中获取菜单列表在路由守卫中进行限制

二、遇到的问题:

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里面可以放置一些异步的方法,例如:数据请求、计时器等。

最新文章

  1. SQL Server 索引和表体系结构(非聚集索引)
  2. CodeSmith模板
  3. hdfs 数据块重分布 sbin/start-balancer.sh -threshold
  4. 对request.getSession(false)的理解(附程序员常疏忽的一个漏洞)--转
  5. JavaScript 随机数函数
  6. web之ios开关按钮
  7. iOS系统原生二维码条形码扫描
  8. ajax跨域请求--jsonp实例
  9. PL/SQL 编程(三 )程序包和包体,触发器,视图,索引
  10. Spark源码剖析(七):Job触发流程原理与源码剖析
  11. jQuery --- 第四期 (jQuery动效)
  12. Java 获取当前线程、进程、服务器ip
  13. 【ybt1252】走迷宫
  14. centos7.3安装nvidia驱动和cuda9
  15. matlab知识
  16. spring boot 知识点
  17. idou老师教你学istio :基于角色的访问控制
  18. Solr4.4入门,介绍Solr的安装、IK分词器的配置及高亮查询结果(转)
  19. js-NodeList对象和HTMLCollection对象
  20. OpenFileDialog 打开文件

热门文章

  1. 迁移学习(DANN)《Domain-Adversarial Training of Neural Networks》
  2. 深入理解IOC并自己实现IOC容器
  3. 存储自定义类型元素-LinkedHashSet集合
  4. 行为型模式 - 访问者模式Visitor
  5. Java + SikuliX 基于图像实现自动化测试
  6. MySQL-知识点补充
  7. shin-monitor源码分析
  8. 谈谈Selenium中的三种切换之alert
  9. visual studio(vs2017、vs2019)离线安装包下载、制作
  10. Android面试-字节一面