于 2017.09.26 Facebook 发布 React v16.0 版本,时至今日已更新到 React v16.6,且引入了大量的令人振奋的新特性,本文章将带领大家根据 React 更新的时间脉络了解 React16 的新特性。按照 React16 的更新时间,从 React v16.0 ~ React v16.6 进行概述。React v16.0React v16.1React v16.2React v16.3React v16.4React v16.5React v16.6React v16.7(~Q1 2019)React v16.8(~Q2 2019)React v16.9(~mid 2019)下面将按照上述的 React16 更新路径对每个新特性进行详细或简短的解析。React v16.0中,render 支持返回数组和字符串,Error Boundaries 支持更优雅的错误处理策略,createPortal 提供了弹窗、对话框等脱离文档流的组件开发便利,支持自定义 DOM 属性,减少文件体积,Fiber 碎片化更新过程,提高渲染流畅性。React v16.1中,Call Return(react-call-return npm)提供父组件与子组件之间的回调信息传递解决方案。React v16.2中,Fragment 组件可以将子元素添加到 DOM tree 上而不需要额外的父节点。React v16.3中,createContext 提供全新的 Context API,createRef/forwardRef 规范了 Ref 的获取方式,生命周期函数更新引入 getDerivedStateFromProps、getSnapshotBeforeUpdate、componentDidCatch 等新生命周期函数,Strict Mode 开启严格模式,检测潜在问题。React v16.4中,Pointer Events 提供指针设备触发的 DOM 事件,Profiler 添加对新的 profiler DevTools 插件的支持。React v16.5中,memo 提供函数组件的优化,lazy/Suspense 实现动态 import 组件和代码分割,static contextType 提供更便捷的 Context API 使用体验,getDerivedStateFromError 允许在 render 完成前渲染 Fallback UI。React v16.7(~Q1 2019)中,Hooks 解决状态逻辑复用问题,Concurrent Rendering 提供并发渲染模式,Suspense for Data Fetching 通过 ComponentDidCatch 实现异步数据请求。从 React16 的一系列更新和新特性中我们可以窥见,React 已经不仅仅只在做一个 View 的展示库,而是想要发展成为一个包含 View/数据管理/数据获取 等场景的前端框架,以 React 团队的技术实力以及想法,笔者还是很期待和看好 React 的未来,不过它渐渐地已经对开发新手们不太友好了。