Vuex随笔
最近在项目中使用到了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随笔的更多相关文章
- vuex 随笔
vuex刷新数据消失问题: 在项目的入口页面(App.vue)里添加监听刷新事件: 或者使用插件:npm install vuex-persistedstate --save
- 使用vuex的流程随笔
1.在建好的vue项目中新建一个vuex文件夹在此文件夹下建一个index.js文件,在此文件下引入vuex 模块(当然需要先npm下载)和vue模块,在引入你所有的自定义的module.js模块(下 ...
- vuex状态管理2
在vuex的官网https://vuex.vuejs.org中,提到的核心概念一共有5个,分别是State.Getter.Mutation.Action和Module,在上一篇随笔中,我们主要用到其中 ...
- 循序渐进VUE+Element 前端应用开发(2)--- Vuex中的API、Store和View的使用
在我们开发Vue应用的时候,很多时候需要记录一些变量的内容,这些可以用来做界面状态的承载,也可以作为页面间交换数据的处理,处理这些内容可以归为Vuex的状态控制.例如我们往往前端需要访问后端数据,一般 ...
- 在Vue3项目中使用pinia代替Vuex进行数据存储
pinia是一个vue的状态存储库,你可以使用它来存储.共享一些跨组件或者页面的数据,使用起来和vuex非常类似.pina相对Vuex来说,更好的ts支持和代码自动补全功能.本篇随笔介绍pinia的基 ...
- 关于Vue.js 2.0 的 Vuex 2.0,你需要更新的知识库
应用结构 实际上,Vuex 在怎么组织你的代码结构上面没有任何限制,相反,它强制规定了一系列高级的原则: 应用级的状态集中放在 store 中. 改变状态的唯一方式是提交mutations,这是个同步 ...
- AI人工智能系列随笔
初探 AI人工智能系列随笔:syntaxnet 初探(1)
- 【置顶】CoreCLR系列随笔
CoreCLR配置系列 在Windows上编译和调试CoreCLR GC探索系列 C++随笔:.NET CoreCLR之GC探索(1) C++随笔:.NET CoreCLR之GC探索(2) C++随笔 ...
- C++随笔:.NET CoreCLR之GC探索(4)
今天继续来 带大家讲解CoreCLR之GC,首先我们继续看这个GCSample,这篇文章是上一篇文章的继续,如果有不清楚的,还请翻到我写的上一篇随笔.下面我们继续: // Initialize fre ...
随机推荐
- 学习笔记——Java核心技术之接口、继承与多态练习题
1.创建一个抽象类,验证它是否可以实例化对象. package com.lzw; public abstract class UseCase3 { abstract void doit(); publ ...
- 详解JavaScript闭包
要想完全明白JavaScript的闭包,要先明白js中的一些基础原理,然后我再给出一些例子来讲解闭包. 在执行JavaScript时会创建一个执行环境(excution context),执行环境定义 ...
- Spring_构造注入
依赖注入的第二种注入方式:构造器注入 创建带参数的构造方法,参数类型为注入类的类型 项目要先添加spring支持: package com; public class Computer { priva ...
- C#基础 运算符
运算符分为5类-- 1.算数运算符[加加(++) 减减(--) 加(+) 减(-) 乘(*) 除(/) 取余(%)] (1)前++和后++的区别 using System; using ...
- MySQL Sniffer
MySQL Sniffer 是360开源的一个基于 MySQL 协议的抓包工具, 能实时抓取客户端端请求,并格式化输出操作语句,操作十分简单.对于问题的定位,操作的审核是个不错的利器. Github地 ...
- 《深入理解Java虚拟机》学习笔记之内存回收
垃圾收集(Garbage Collection,GC)并不是Java语言的半生产物,事实上GC历史远比Java久远,真正使用内存动态分配和垃圾收集技术的语言是诞生于1960年的Lisp语言.经过半个世 ...
- 多线程爬坑之路--并发,并行,synchonrized同步的用法
一.多线程的并发与并行: 并发:多个线程同时都处在运行中的状态.线程之间相互干扰,存在竞争,(CPU,缓冲区),每个线程轮流使用CPU,当一个线程占有CPU时,其他线程处于挂起状态,各线程断续推进. ...
- maven springmvc启动问题
1.环境 SpringMVC + Maven + mybatis 2.报错提示 严重: Error configuring application listener of class org.spri ...
- iframe----摘抄出处未知
1.frame不能脱离frameSet单独使用,iframe可以: 2.frame不能放在body中:如下可以正常显示: <!--<body>--> <frameset ...
- Java面试系列
如果你的面试简历是如下这样写的,请务必准备回答下面的所有问题. 面试职位:Java高级工程师 专业技能: (1)牢固掌握Java基础知识,如集合.并发.I/O等,并对Java源码有一定的研究. (2) ...