/images/avatar.jpeg
写过点代码读过点书

React Fiber 是什么?

React 15 以及之前的版本有一个主要的问题 —— 虚拟 dom 的 diff 操作是同步完成的。 这就意味着当页面上有大量 DOM 节点时,diff 的时间可能过长,从而导致交互卡顿,或者直接没有反馈。 这就引出了 React Fiber 来处理这样的问题。 为了保证阅读效果,建议读者边阅读边动手实操,点击这里可以下载源码。 这篇文章是什么?不是什么? 这篇文章将从一个简单的例子入手,主要聚焦于解释 React Fiber 是怎么做到异步可中断更新的。 这篇文章并不会深究 Fiber 中其他有趣的事情,例如 workInProgress、Effects list、updateQueue、performUnitOfWork、render phase & commit phase,这方面已经有足够优秀的文章帮我们弄清楚这些事情,感兴趣的同学可以阅读下面的文章列表: Inside Fiber: in-depth overview of the new reconciliation algorithm in React React Fiber 源码解析 React issue 13186 这可能是最通俗的 React Fiber 打开方式 从一个问题开始 在讲 React Fiber 之前,我们先来看一个简单的例子: 现在有 10000 个节点,每个节点计算耗时 1ms,如何保证 10000 个节点顺利执行完成,又能让用户感知不到卡顿? 为了方便测试,我们用计算斐波那契数列来模拟节点耗时: 1 2 3 4 5 6 7 8 9 10 11 12 export function fibonacci(n) { if (n === 0) return 0; else if (n === 1) return 1; return fibonacci(n - 1) + fibonacci(n - 2); } export const fibonacciWithTime = (n) => { console.

google 检索技巧

1、想要去掉广告或是某些关键词时,使用【-】 例如: 英文学习-广告 2、想要精准搜索关键词,使用【"】 例如搜尋「learning science」容易搜尋出「learning」和「science」各別的分開結果,如果使用【“”】就會搜尋完整「“learning science”」這一組專業名詞的結果。 例如搜索 learning science 容易搜索出 learning 和 science 各别的结果,这个时候使用 “earning science” 就能搜索同时存在 learning science 的结果。 3、搜索标题,使用【intitle】 例如: intitle:社群营销案例 4、搜索特定的文件格式,使用【filetype】 例如: 编码 filetype:pdf 5、搜索特定网页里的内容,使用【site】 例如: javascript site:github.com 参考链接 7 個內行人常用 Google 搜尋技巧,讓決策更有效率

rxjs 级联异步请求

Rxjs 在处理级联异步请求会稍微有一点点绕,场景如下:发出一个请求,这个请求会返回一个数组;然后再根据这个数组中的每个 item 再发出一个异步请求,返回一个值;最后需要整理成一个数组返回;这时候应该如何做,本文记录了简单的解答。