问题
前端开发中有时会遇到如下图所示的需求,即在一个不规则边框的容器中显示内容。本文讲述如何拆解这个需求,并通过 border-image CSS 属性实现。(下文讲解使用的原始图片是这个。)
React 从 v16 开始逐步引入异步可中断的渲染架构。
React 渲染过程可以分为三个阶段 Scheduling、Reconciliation、Commit。
Scheduling 阶段执行任务调度,Reconciliation 阶段更新虚拟 DOM,本文主要讲述这两个阶段。(Commit 阶段更新 UI。e.g. 在浏览器环境中更新 DOM、在移动端环境中更新 Native 视图。)
本文基于目前最新的 React v18.2.0 代码。
JSX 的介绍参考 React 官方文档 JSX 简介。
JSX 编译后会转为名为 React.createElement 的函数调用。
1 | function createElement(type: any, props?: any, ...children: ReactNode[]) |
createElement 函数接收三个参数。
第一个参数为节点类型 type。比如,若在 JSX 中是 div,则 type 为 “div” 字符串;若在 JSX 中是自定义函数组件 CustomComponent,则 type 为 CustomComponent 函数。
第二个参数为节点属性 props。比如,若 JSX 中声明 <div className="wrap">
,则 props 为 { className: "wrap" }
;若 JSX 中声明 <div>
,则 props 为 null。
第三个参数为不定参数,每个参数值对应一个当前节点的子节点。