摘要: tree diff主要针对的是react dom节点跨层级的操作。什么是跨层级的操作呢? 除同级之外的操作都是跨层级。比如A节点下有B和C,A的同级有个小狗节点,现在把整个A节点移到小狗节点下。 对于这种跨层级操作,react只会进行创建和删除操作,当根节点发现子节点A消失了,就会直接销毁A,当小狗 阅读全文
posted @ 2024-09-03 22:13 飞向火星 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 所谓的diff算法,其实就是react 同时比较两棵虚拟dom树之间的差异,一颗是当前的dom结构,另一棵在react状态变更将要重新渲染时生成。react通过比较这两棵树的差异,决定是否需要修改dom结构,以及如何修改。并且,最大程度的复用旧的节点,来减少真实的dom渲染。在这个过程中进行比较的算 阅读全文
posted @ 2024-09-03 12:19 飞向火星 阅读(33) 评论(0) 推荐(0) 编辑
摘要: 首先,先简单介绍一下什么是diff,在react或者vue框架中。组件更新时,不会直接去操作DOM,而是首先更新虚拟dom。比如一次更新中,更新了10次数据,那么反应到页面上,就会更新10次dom。这是很浪费性能的,所以虚拟dom就产生了,把10从更新,聚集到一块,统一更新一次虚拟dom,让后再更新 阅读全文
posted @ 2024-09-02 20:56 飞向火星 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 这个key首先是只在渲染数组列表的时候会用到。 比如经常遇到的 如上 没有key的话,会报一个错,那么,我们可不可以使用数组的index作为下标呢? 答案是不推荐。因为在数组项的顺序在插入、删除或者重新排序等操作中会发生改变,此时把索引作为key可能会产生一些微妙的bug。 像下面这种纯div渲染列 阅读全文
posted @ 2024-08-08 21:37 飞向火星 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 最近面试遇到了这个问题两次了,说句实话,以前开发的时候还真没考虑过这个问题。面试官: useEffect第一个参数可不可以用异步函数? 我们先来看看用了异步函数会报什么错 报这个错的原因是因为async 会返回一个promise函数,而clean()函数不能是异步的 。 先来看看clean()函数的 阅读全文
posted @ 2024-06-26 22:54 飞向火星 阅读(57) 评论(0) 推荐(0) 编辑
摘要: 1.使用window.open即可,如下 2.使用a标签,在href内写上菜单上的地址即可,如下。 3.使用dva的Link组件跳转 4.routerRedux.push跳转 这个有个前置条件,组件需要用connect绑定。否则使用不了dispatch 5.直接使用react-router 里的hi 阅读全文
posted @ 2024-06-17 15:53 飞向火星 阅读(19) 评论(0) 推荐(0) 编辑
摘要: antd组件的缩略图使用 img标签即可实现,我们这里有一个3D文件显示2D缩略图的需求,而这个缩略图是后台从接口返回的,所以需要自定义缩略图。 这里的imageUrl就是你要的缩略图 用到了官网案例的将图片转为base64,具体的方法看官网。 在这里还有最最重要的一个点就是得控制它的样式,不控制样 阅读全文
posted @ 2024-02-03 17:48 飞向火星 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 今天遇到个有意思的问题,记录下 参考:https://www.cnblogs.com/-roc/p/15098593.html 阅读全文
posted @ 2024-01-05 15:06 飞向火星 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 一个牛逼的需求,在前端页面插入excel,看同事做了一个这么个需求,记录一下使用的插件 ONLYOFFICE API 文档 - 基本概念 阅读全文
posted @ 2023-12-05 09:36 飞向火星 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 1. 在dva.js 的 effects里面不能使用setTimeout,会报错。 得使用redux-saga 的delay才行(注:dva.js内置了redux-saga)。如下,这样才能延时。 2.监听effects可以使用 take和all . dva api之take、put、select、 阅读全文
posted @ 2023-09-14 10:07 飞向火星 阅读(60) 评论(0) 推荐(0) 编辑