无障碍
    语义化: 提升可访问性(更多人使用网站),其一帮助残障人士使用。
    WAI-ARIA : 不影响原网站,暴露更多信息给无障碍API。
    ….可待补充

    代码分割
    懒加载: 用户只加载需要的代码.
    配置webpack按照import语法进行分割,配置Bable避免将import转换,而是动态解析。
    React.lazy: 需要在Suspense组件中渲染,并提供加载过程展示组件。但需单独文件进行导出命名。
    基于路由分割: 使用React Router

    Context
    跨层共享,主题、地区偏好设置。
    组件复用性将变差。
    多个消费组件可使用同一个Provider, 多个Provider里层覆盖外层。
    provider值更新,consumer也会五十shouldComponentUpdate进行更新。
    消费者组件A使用 A.contextType = context, 在A内部this.context 取到最近的Provider的值,也可以直接context.Consumer获取
    provider也需要提供方法对自身数据进行操作给消费组件。
    provider的值需要存放到state当中,避免自身重新渲染影响到消费组件的意外更新。

    错误边界
    捕捉子树错误的组件,展示降级UI。
    需要定义componentDidCatch() 或者 static getDerivedStateFromError()
    任何未被错误边界捕获的错误将导致整个 React 组件树被卸载, 且无法捕捉事件处理器内部错误

    Ref转发
    常规函数class都不接受ref作为参数
    本身属于React特殊处理的key,经由高级组件转发时,需要使用React.forwardRef,否则会导致指向最外层的容器而非包裹组件。
    ….可待补充

    Fragments
    包裹多个元素但不生成实际DOM
    唯一属性只有key(短语法则不支持),未来会拓展

    高级组件HOC
    mixin 已经被弃用
    HOC是纯函数,接受组件返回新组件,没有副作用。多余的属性需要透传。
    不要修改子组件,不要在render中使用HOC,不能传递ref作为属性
    可以使用hoist-non-react-statics将手动添加的static方法进行拷贝
    ….可待补充

    与第三方库协同
    避免React更新DOM,给其他库空div供起操纵
    ….可待补充

    JSX深入
    动态生成组件
    字符串字面量赋值给 prop 时,它的值是未转义
    … 传递其余props
    去除首位空行,文字间新行被压缩为一个空格
    0 在条件判断中会被React看作true

    性能优化
    shouldComponentUpdate 覆盖生命周期进行提速,也可返回false跳过生命周期的渲染。
    React.PureComponent自动在shouldComponentUpdate实现了props和state的浅比较

    Portals
    将子节点渲染到父节点外
    事件冒泡 context与普通组件无异,因为React树的结构并没有发生变化,只是DOM树的位置改变了

    Profiler
    测量组件的渲染时间
    需要ID 和 render函数,在组件树提交更新时触发render
    增加开支,慎重使用,生产禁用。

    协调
    Diffing算法 和 Key值
    ….可待补充

    Refs&DOM
    函数组件没有实例,不能直接使用ref,需要结合forwardRef(useImperativeHandle)进行使用
    通常不要父组件使用子组件的DOM节点
    findDOMNode可用于找到原生DOM,只可用在已挂载组件,且不能用于函数组件,并慎用。
    回调ref:给元素的ref属性赋予一个函数,该函数参数为该元素,如果为内联函数(即定义在render的函数),会在组件更新阶段触发两次,第一次传入null,第二次传入element

    Render Props
    props的render,接受渲染函数,而不进行自己的渲染。
    将组件state内容分享给其它组件。
    可以实现高阶HOC
    render props 与纯组件使用注意:父组件的render会使纯组件render props浅对比为false,因此生成新的函数,可以定义静态方法。
    无法定义静态方法时,你需要关闭组件的 props 和/或 state?

    严格模式
    识别不安全生命周期 + 检测意外副作用 + 检测过时语法
    ….可待补充

    PropTypes
    组件props的定义限制
    可限制只有一个元素
    defaultProps: 定义默认值

    Web Component
    与React目的不一致,可单独使用也可结合使用
    在React组件当中使用Web Component最好包装成组件形式,手动处理React不会渲染的逻辑