React的diff
React 的 diff 一个DOM节点在某一时刻最多会有 4 个节点和它相关。 current Fiber。如果该DOM节点已在页面中,current Fiber代表该DOM节点对应的Fiber节点。 workInProgress Fiber。如果该DOM节点将在本次更新中渲染到页面中,workInProgress Fiber代表该DOM节点对应的Fiber节点。 DOM...
React 的 diff 一个DOM节点在某一时刻最多会有 4 个节点和它相关。 current Fiber。如果该DOM节点已在页面中,current Fiber代表该DOM节点对应的Fiber节点。 workInProgress Fiber。如果该DOM节点将在本次更新中渲染到页面中,workInProgress Fiber代表该DOM节点对应的Fiber节点。 DOM...
前端如何测试网络的速度? B 站视频播放时有一个自动根据网络环境调整分辨率的功能,想了解如何测速 然后我找了下面的方法测速 ajax 请求 利用 XMLHttpRequest 请求返回的 Content-length,和请求所需时间求得下载速度 const getSpeed = (url) => { return new Promise((resolve) => ...
常见错误类型 错误 解释 示例 SyntaxError 解析时发生语法错误 const x TypeError 值不是所期待的类型 const person = 1; person.name ...
React.memo react.memo 有第二个参数,可以通过第二个参数来自定义组件的渲染时机。 React.memo(Component, compare) React.memo 接受两个参数,第一个参数 Component 原始组件本身,第二个参数 compare 是一个函数,可以根据一次更新中 props 是否相同决定原始组件是否重新渲染。 memo 的几个特点是: ...
当多种 children 一起输入时 function Container(props) { const defaultProps = { name: "alen", msg: "hello", } return props.children.map((item) => { // 通过判断 clone 混入props if (React....
createObjectURL 是什么 URL.createObjectURL() 静态方法会创建一个 DOMString,其中包含一个表示参数中给出的对象的 URL。这个 URL 的生命周期和创建它的窗口中的 document 绑定。这个新的 URL 对象表示指定的 File 对象或 Blob 对象。 — MDN Blob URL/Object URL Blob URL/Ob...
原型与原型链 实例与构造函数原型之间有直接的联系,但实例与构造函数之间没有。 每个函数都有一个属性,就是 prototype,函数的 prototype 指向了一个对象,这个对象就是调用该构造函数创建的实例的原型。 可以这么理解:每一个 JavaScript 对象(null 除外)在创建的时候就会与之关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型“继承”属性。实例 p...
虚假的洗牌算法 最常见的: const shuffle = (list) => list.sort((x, y) => Math.random() - 0.5) 可这并不合理,对于这个数组:[1,2,3,4,5],每个数字出现在每个位置的概率应该是相同的。然而使用以上算法,1 出现在 index=4 位置的概率 与 4 出现在 index=4 的概率并不相同。 真正的洗...
关于setTimeout 首先要明白,setTimeout 的执行只是在内存中对元素属性进行改变,这个变化必须要等到屏幕下次绘制时才会被更新到屏幕上。如果两者的步调不一致,就可能会导致中间某一帧的操作被跨越过去,而直接更新下一帧的元素。假设屏幕每隔16.7ms刷新一次,而setTimeout 每隔10ms设置图像向左移动1px, 就会出现如下绘制过程(表格): 第 0 ms:...
三次握手 • 第一次握手([SYN], Seq = x) 客户端发送一个SYN标记的包,Seq初始序列号x,发送完成后客户端进入SYN_SEND状态。 • 第二次握手([SYN,ACK], Seq = y, ACK = x + 1) 服务器返回确认包(ACK)应答,同时还要发送一个SYN包回去。ACK = x + 1,表示确认收到(客户端发来的Seq值 + 1),Seq = y, 表示让客户...