react18提供了新的根结点创建方式:ReactDOM.createRoot()。利用此API创建的react应用将启用react18全部新特性。
import React from 'react';// 留意这里ReactDOM是从client引入import ReactDOM from 'react-dom/client';import App from './contest';ReactDOM.createRoot(document.getElementById('root')).render(<App />);出于兼容性思量,传统的ReactDOM.renderAPI也会继续保存,利用ReactDOM.render创建的react18应用的体现与react17完全一致。
Concurrent Render API
这个Hook实行机遇在 DOM 天生之后,useLayoutEffect实行之前,此时无法访问DOM节点的引用。一样寻常用于办理 CSS-in-JS 库在渲染中动态注入样式的性能题目。
useSyncExternalStore
此API一样寻常用于第三方状态管理库如redux/mobx,它们在控制状态时大概并非直接利用react的 state,而是本身在外部维护了一个store对象,脱离了react的管理,此时若利用concurrentAPI则大概出现兼容性题目,useExternalStore就是为了办理这种题目,根本实现原理是将render过程欺压变为同步的不可中断的更新。
SSR
更多信息可见Upgrading to React 18 on the server、New Suspense SSR Architecture in React 18
升级指南