Skip to main content

49 docs tagged with "掘金小册"

View All Tags

beginWork和render

fiber 调和更新执行的就是 beginWork;但是 beginWork 和 render 并不等价,render 一定会导致 beginWork 的执行,但是 beginWork 执行并不一定会导致组件重新 render.

DFS和BFS

DFS(深度优先搜索)和 BFS(广度优先搜索)。这两种算法和栈、队列有着千丝万缕的关系

react-router

history、react-router、react-router-dom之间的关系

事件原理

问:React 为什么要有一套自己的事件系统呢?

从 V8 中看 JS 性能优化

首先 JS 需要有引擎才能运行起来,无论是浏览器还是在 Node 中,这是解释型语言的特性。但是在 V8 引擎下,又引入了 TurboFan 编译器,他会在特定的情况下进行优化,将代码编译成执行效率更高的 Machine Code,当然这个编译器并不是 JS 必须需要的,只是为了提高代码执行性能,所以总的来说 JS 更偏向于解释型语言。

优化-细节

建议不要在 hooks 的参数中执行函数或者 new 实例

总结

- React 中的事件并不是原生事件,而是合成事件(这也是 react 中为什么不能通过return false来阻止默认事件的原因)

我们写的 JSX 终将变成什么

在 React 的世界中,函数和类就是 UI 的载体。我们甚至可以理解为,将数据传入 React 的类和函数中,返回的就是 UI 界面。

模块化 css

模块化的目的:防止全局污染,样式被覆盖

环形链表

环形链表基本问题——如何判断链表是否成环?

调度与时间片

React 的每次更新都需要从 root 节点开始,向下 diff,那么页面越大就会越卡顿。既然更新过程阻塞了浏览器的绘制,那么把 React 的更新,交给浏览器自己控制不就可以了吗,如果浏览器有绘制任务那么执行绘制任务,在空闲时间执行更新任务,就能解决卡顿问题了。

起源 Component

组件本质上就是类和函数,但是与常规的类和函数不同的是,组件承载了渲染视图的 UI 和更新视图的 setState 、 useState 等方法。React 在底层逻辑上会像正常实例化类和正常执行函数那样处理的组件。