最近在项目中使用到了vuex,但是在配合vue使用时,也还是遇到了不少的问题,最终还是解决了问题,因此写一篇随笔来记录期间遇到的问题吧

项目概要:

Vuex中所储存的的状态如下:

Vue中:有一个tabEntrance组件 与一个productList组件, productList是tabEntrance下的一个子路由

并且在两个组件的计算属性中分别返回了state中的baseList

<-------------------------正常执行------------------------------------------>

在正常的逻辑中,我首先在tabEntrance的mounted中完成了对baseList的初始化工作:

(response是请求的返回结果)

然后再将路由push到productList:

,

紧接着,我在productList的mounted中去读取这个baseList,整个流程是可以正常完成的,为了方便理解,我在两个组件的mounted中加了一些log,方便看出流程顺序

这是从tabEntrance 进入productList是,控制台的顺序输出,程序此时的执行顺序 是完全可以理解的

<-------------------------问题所在------------------------------------------>

在此之前,我以为程序是正常的,但是当我尝试在 该路由下F5刷新时,问题来了,此时并不是先执行的tabEntrance的mounted,然后再执行的productList的mounted,反而恰恰相反,先执行的productList 的mounted,然后再执行的tabEntrance的mounted,由控制台的输出可以见得:

这恰恰是问题所在,因为先执行了productList的mounted,而在productList的mounted中操作了baseList数组,但是我的baseList数组初始化却是在tabEntrance中完成的,这必然会导致无法获取到baseList的问题

<-------------------------解决方案------------------------------------------>

为了解决这个问题,我在productList中做了一次判断, 如果 当前的 this.baseList.length 为空的话,则重新请求一次,这个方案感觉并不是特别可取,但我也想不到其他的好的方案,如果有读者恰好遇到了相同的问题,并且看到了这篇文章,如果有更好的解决方案,可以留言给我,大家共同讨论。

Vuex随笔的更多相关文章

  1. vuex 随笔

    vuex刷新数据消失问题: 在项目的入口页面(App.vue)里添加监听刷新事件: 或者使用插件:npm install vuex-persistedstate --save

  2. 使用vuex的流程随笔

    1.在建好的vue项目中新建一个vuex文件夹在此文件夹下建一个index.js文件,在此文件下引入vuex 模块(当然需要先npm下载)和vue模块,在引入你所有的自定义的module.js模块(下 ...

  3. vuex状态管理2

    在vuex的官网https://vuex.vuejs.org中,提到的核心概念一共有5个,分别是State.Getter.Mutation.Action和Module,在上一篇随笔中,我们主要用到其中 ...

  4. 循序渐进VUE+Element 前端应用开发(2)--- Vuex中的API、Store和View的使用

    在我们开发Vue应用的时候,很多时候需要记录一些变量的内容,这些可以用来做界面状态的承载,也可以作为页面间交换数据的处理,处理这些内容可以归为Vuex的状态控制.例如我们往往前端需要访问后端数据,一般 ...

  5. 在Vue3项目中使用pinia代替Vuex进行数据存储

    pinia是一个vue的状态存储库,你可以使用它来存储.共享一些跨组件或者页面的数据,使用起来和vuex非常类似.pina相对Vuex来说,更好的ts支持和代码自动补全功能.本篇随笔介绍pinia的基 ...

  6. 关于Vue.js 2.0 的 Vuex 2.0,你需要更新的知识库

    应用结构 实际上,Vuex 在怎么组织你的代码结构上面没有任何限制,相反,它强制规定了一系列高级的原则: 应用级的状态集中放在 store 中. 改变状态的唯一方式是提交mutations,这是个同步 ...

  7. AI人工智能系列随笔

    初探 AI人工智能系列随笔:syntaxnet 初探(1)

  8. 【置顶】CoreCLR系列随笔

    CoreCLR配置系列 在Windows上编译和调试CoreCLR GC探索系列 C++随笔:.NET CoreCLR之GC探索(1) C++随笔:.NET CoreCLR之GC探索(2) C++随笔 ...

  9. C++随笔:.NET CoreCLR之GC探索(4)

    今天继续来 带大家讲解CoreCLR之GC,首先我们继续看这个GCSample,这篇文章是上一篇文章的继续,如果有不清楚的,还请翻到我写的上一篇随笔.下面我们继续: // Initialize fre ...

随机推荐

  1. 【Eclipse】web项目部署新手篇

    本文属于新手篇章,记录了Eclipse中部署web项目的步骤 1 . 添加Tomcat服务器 右键项目属性-->Run as-->Run on server弹出以下界面 点击finish之 ...

  2. ERP和MES破冰之路 [普实MES升级中国“智”造]

    题记:早在2007年,普实就提出AIO一体化产品概念,全力打造ERP的资源闭环,并取得了良好的市场效应.如今,在制造业的智能生产需求下,生产制造执行系统(MES)成功推向市场. MES是什么? 制造执 ...

  3. 徒手用Java来写个Web服务器和框架吧<第三章:Service的实现和注册>

    徒手用Java来写个Web服务器和框架吧<第一章:NIO篇> 徒手用Java来写个Web服务器和框架吧<第二章:Request和Response> 这一章先把Web框架的功能说 ...

  4. Selenium Web 自动化 - 项目持续集成

    Selenium Web 自动化 - 项目持续集成 2017-02-13 目录 1环境准备  1.1 安装git  1.2 安装jenkins  1.3 安装jenkins插件  1.4 jekins ...

  5. JAVA反射原理解读

    一.什么是JAVA的反射 1.在运行状态中,对于任意一个类,都能够知道这个类的属性和方法. 2.对于任意一个对象,都能够调用它的任何方法和属性. 这种动态获取信息以及动态调用对象的方法的功能称为JAV ...

  6. Servlet 与 Ajax 交互一直报status=parsererror

    原因:servlet 返回的数据不是 Json 格式 1.JS代码为: var jsonStr = {'clusterNum':2,'iterationNum':3,'runTimes':4}; $. ...

  7. Python(五)编程小实例

    Python(五)编程小实例 抓取网页信息,并生成txt文件内容! Python抓取网页技能--Python抓取网页就是我们常看见的网络爬虫,我们今天所要用到的就是我们Python中自带的模块,用这些 ...

  8. 【转】Django Middleware

    Django 处理一个 Request 的过程是首先通过中间件,然后再通过默认的 URL 方式进行的.我们可以在 Middleware 这个地方把所有Request 拦截住,用我们自己的方式完成处理以 ...

  9. Java中的值传递

    1.先比较下字符串的比较 == 代表全等于 值和地址(存放地址) 全部相等于. equals 值等于== 和 equals的区别 列如下面的 如果name1==name2是等于的 然而name1==n ...

  10. HTML页面内容禁止选择、复制、右键

    <body leftmargin=0 topmargin=0 oncontextmenu='return false' ondragstart='return false' onselectst ...