升级 Babel 配置过程除了遇到 replaceAll-is-not-a-function
问题,还遇到关于 Babel sourceType 配置的问题。
React 合成事件源码阅读
React 合成事件是基于事件委托机制,构建的自定义事件体系。将需要监听的事件类型都收集起来放在 document 元素上,待事件触发通过 event.target
将事件分发给相关元素。
以下是分发时收集相关元素代码,包括两次遍历和获取父元素:
setState 源码阅读
在理解setState 是同步还是异步的 时,梳理下 setState 的源码逻辑,如下:
React 合成事件机制
babel/preset-env 文档
@babel/preset-env
is a smart preset that allows you to use the latest JavaScript without needing to micromanage which syntax transforms (and optionally, browser polyfills) are needed by your target environment(s). This both makes your life easier and JavaScript bundles smaller!
@babel/preset-env
是一个智能的预设,让你在使用最新的 JavaScript 的同时,无需关心那个语法转换或者浏览器 polyfill 是被目标浏览器所需要。这会让你的生活更美好,同时让 JavaScript bundles 更小。
从 replaceAll is not a function 说起
开发一个项目的时候,发现 @babel/preset-env 的配置如下:
1 | [ |
使用这种配置,没有利用 @babel/preset-env
根据 targets
自动引入 polyfill 的能力,而是开发者手动引入。
setState 是同步还是异步的
React 15 的调和
React 的虚拟 DOM
虚拟 DOM 是使用 JS 对象来描述真实 DOM 结构。在数据发生改变时,虚拟 DOM 也发生改变,通过对比新旧虚拟 DOM 结构(diff),找出二者差异,对真实 DOM 结构做更新(patch)。