当前位置:首页 > 技术分析 > 正文内容

vue 异步更新那点事儿 #web前端

ruisui883个月前 (01-13)技术分析18

异步更新那点事儿。

wue & vueuse官方团队成员。

看一下群友投稿的问题。什么问题?就是它这边有一个组件,这个组件里面有个userID,然后这个userID通过props传给了子组件,子组件是userinfo,它里面是用来渲染用户信息的。渲染用户信息的同时,userinfo这个组件又暴露了一个方法,这个方法是用来获取最新的用户信息的,叫get userinfo。

get userinfo直接就用了props里面的user ID,是副组件传过来的,是这么一个东西。然后它在复组件里面去更改,去更新,更新这个用户。更新了之后,userID就等于2了,默认是1,更新了之后就等于2了。更新完成之后,它马上就掉了get user,getUserInfo问,这边propsID获取到的是什么东西?有的朋友知道,有的朋友不知道,我们来试一下。

打开控制台,更新,这个时候拿到的是一对,这边变成2了,怎么回事?为什么会有这种情况?这是因为vue的更新是异步的,很多人知道更新是异步的,但是我也跟群友解释了,他说视图更新是异步的,那跟props有什么关系?它不仅有关系而且关系还很大,因为props就是在定render函数的过程中生成的。

下面来看张图,这张图就简单的画了一下,这个APP组件就是副组件,副组件要挂载的时候触发render函数,然后生成了vnode,生成了vnode,有个props,就是给它传的这个东西,但是这个东西也在里面,现在只关心这个东西,生成了一个props,这边一个props,搞成这个样子了,搞成这个样子之后子组件就可以直接用了,子组件里面拿到props就可以直接用了,叫user idsse,这个时候是没问题的。

接着来看一下它怎么更新?怎么更新?更新的时候是这样的,复组件修改了props,就是这边修改props,修改的时候是修改的这个,修改这个REF了,就是修改这个REF,把userID给改了,改成什么东西?改成二了,改成二,这边是副组件上面的userID,它不是propos的内容,userID,副组件是改了自己的userID。

改了之后这个时候要触发页面更新,propos也没变,但是触发页面更新不是同步的,是异步的,先给我放到异步队列里面去,放到微任务队列里面去,先歇一会,先干活,先干着,改完之后还先干活,但是这边已经接到通知了,一会要更新,一会再干,先干,接着干,接着干就到这里了,到这里之后就跳上get user音否,这个时候拿到这个东西还没更新,还是一对,还是一,这边还没改,还是一对,还是一,这边干活,干活,这个掉完了,打印出来是一对,干完了之后该它了。调用的时候会触发一个地府,这个地府是干什么的?地府就是用来对比的,这个地方是一对,它一搞,搞出来对比的时候是2,还对不上号,那我就更新一下。

你看最新的是2,那我也更新成2,那它就更新成2了,更新成2之后这个时候自主键就可以拿到最新了,这个时候自主键就可以直接拿到最新的了。

这个流程里面主要问题在哪?在这个地方,由于这个地方是义部的,所以你这边副组件改了东西之后props实际上还是没有更新的,是这么一回事。所以你要想拿到最新的可以在这边调next take,把这个东西放进去就可以了。

到Email来试一下,刷新,这时候就是2了,跟这边是一样的,这时候就变2了,或者你也可以这样,你在这边把这个东西传过去,传过去肯定就是2了,然后你也可以这样,我一般就这样了,你要我写肯定就这样写,我就这样写,我直接写个watch,watch,然后watch去监听props里面的user ID,我这样写肯定能拿到最新的。

来试一下,打印一下newY6,获取到最新的userID,看一下刷新,这边还掉了一下,这边还有问题,我把那个删掉了,这样更新,这个时候就拿到最新的了,就是这么一个问题。如果遇到这种问题尽量这样,就是在指数间里面去监听,用watch去监听,监听肯定能拿到最新的,变了就更新watch了。props里面UIT变了,i变了就触发卧室,这样是比较好的。要是在这边多多少少要不注意确实还是有点问题。

今天视频就到这里了。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/258.html

标签: vue升级
分享给朋友:

“vue 异步更新那点事儿 #web前端” 的相关文章

壹啦罐罐 Android 手机里的 Xposed 都装了啥

这是少数派推出的系列专题,叫做「我的手机里都装了啥」。这个系列将邀请到不同的玩家,从他们各自的角度介绍手机中最爱的或是日常使用最频繁的 App。文章将以「每周一篇」的频率更新,内容范围会包括 iOS、Android 在内的各种平台和 App。本期继续歪楼,由少数派撰稿作者@壹啦罐罐介绍他正在使用的...

VIM配置整理

一、基本配色set number set showcmd set incsearch set expandtab set showcmd set history=400 set autoread set ffs=unix,mac,dos set hlsearch set shiftwidth=2 s...

学前端,这30个CSS选择器,你必须熟记

你学会了基本的id,class类选择器和descendant后代选择器,然后就觉得完事了吗?如果这样,你就会错过许多灵活运用CSS的机会。虽然本文提到的许多选择器都属于CSS3,并且只能在现代的浏览器中使用,但学会这些是大有好处的。什么是CSS选择器呢?每一条css样式定义由两部分组成,形式如下:[...

vue2中路由的使用步骤,你学会了吗?

今天我们来整理下关于vue2中路由的使用步骤:1. 导入 vue 文件和Vue-router文件(注意:vue-router是依赖vue运行的,所以一定在vue后引入vue-router)2. 定义路由组件模板3. 创建路由实例并定义路由规则4. 将路由实例挂载给Vue实例5. 在结构区域定义控制路...

详解编程中的同步和异步

本文主要总结一些自己对异步的理解,话不多说 下面开始。一. 单线程 我们常说“JavaScript是单线程的”,所谓单线程,是指在JS引擎中负责解释和执行JavaScript代码的线程只有一个。不妨叫它主线程 但是实际上还存在其他的线程。例如:处理AJAX请求的线程、处理DOM事件的线程、定时器线程...

同步电机和异步电机竟然有这么大区别,看完就理解了

同步电机和异步电机的主要区别是:同步电机能与其定子磁场旋转达到同步转速,异步电机转速达不到定子磁场的同步转速。电机大致分成三种,同步机,异步机(以上两种多与电网相连),还有个直流电机。下面的内容是一个过渡,只作为对电机(同步机、异步机)原理性的知识进行形象的讲解(懂电机的可跳过)。同步机和异步机,这...