React
应用入口
分类 | v18+ | v18- |
---|---|---|
CSR/客户端渲染 | createRoot() v18.0 | ReactDOM.render() v0.13 |
\- | root.render(reactNode) v18.0 | 同上 |
\- | root.unmount() v18.0 | ReactDOM.unmountComponentAtNode() v0.13 |
\- | hydrateRoot() v18.0 | ReactDOM.hydrate() v0.13 |
创建组件
分类 | Hooks | Classes |
---|---|---|
创建 | 函数组件 | React.Component v0.13 |
懒加载 | - | React.lazy() v16.6 import() ES2020 |
异步读取值 | use() v19.0 | - |
\-加载状态 | <Suspense> v18.0 | <React.Suspense> v16.6 |
\-Transition | useTransition() v18.0 | React.startTransition() v18.0 |
\-延迟更新 | useDeferredValue() v18.0 | - |
性能优化 | - | React.PureComponent v15.3 |
\-记忆渲染结果 | useMemo() v16.8 | React.memo() v16.6 |
\-缓存函数 | useCallback() v16.8 | - |
调试 | useDebugValue() v18.0 | static displayName |
组件生命周期方法
分类 | Hooks | Classes |
---|---|---|
挂载 | useState() v16.8 | constructor(props) v0.13 |
\- | - | componentWillMount() v0.13 UNSAFE_componentWillMount() v16.3 |
\- | useState(stateFromPropsFn) | static getDerivedStateFromProps(props, state) v16.3 |
\- | return () | render() v0.13 |
\- | useEffect(()=>{},[]) v16.8 | componentDidMount() v0.13 |
更新 | - | componentWillReceiveProps(nextProps) v0.13 UNSAFE_componentWillReceiveProps(nextProps, nextContext) v16.3 static getDerivedStateFromProps(props, state) v16.3 |
\- | useMemo(()=>,['']) v16.8 | shouldComponentUpdate(nextProps, nextState, nextContext) v0.13 |
\- | - | componentWillUpdate(nextProps, nextState) v0.13 UNSAFE_componentWillUpdate(nextProps, nextState) v16.3 |
\- | - | render() |
\- | useLayoutEffect(setup, dependencies?) v16.8 | getSnapshotBeforeUpdate(prevProps, prevState) v16.3 |
\- | useEffect(()=>{}, ['']) | componentDidUpdate(prevProps, prevState, snapshot?) v0.13 |
卸载 | useEffect(()=>{return ()=>{}}, []) | componentWillUnmount() v0.13 |
错误边界 | react-error-boundary | static getDerivedStateFromError(error) v16.6 |
\- | - | componentDidCatch(error, info) v16.0 |
组件属性
分类 | Hooks | Classes |
---|---|---|
属性声明及默认值 | props=default-value | static defaultProps v0.13/ES2022 |
属性类型及校验 | TypeScript | static propTypes v0.13/ES2022 |
读取属性值 | props | this.props v0.13 |
组件状态
分类 | Hooks | Classes |
---|---|---|
声明 | useState() v16.8 | state ES2022 |
读取 | - | this.state v0.13 |
更新 | set v16.8 | this.setState(nextState, callback?) v0.13 |
\- | useReducer() v16.8 | - |
监听 | useEffect() v16.8 | - |
\- | useLayoutEffect() v16.8 | - |
\- | useEffectEvent() | - |
\-CSS-in-JS | useInsertionEffect() v18.0 | - |
表单输入
分类 | Hooks | Classes |
---|---|---|
表单 | <form> v19.0 | - |
\-表单动作 | useActionState() v19.0 | - |
\-乐观更新表单 | useOptimistic() v19.0 | - |
\-表单状态 | useFormStatus() v19.0 | - |
\- | <input> | - |
\- | <textarea> | - |
\- | <select> | - |
\- | <option> | - |
\- | <progress> | - |
组件渲染
分类 | Hooks | Classes |
---|---|---|
JSX | <Fragment> / <></> v16.2 | React.Children v0.13 key v0.13 |
\- | - | htmlFor v0.13 |
\- | - | classname v0.13 |
\- | - | dangerouslySetInnerHTML v0.13 |
渲染函数 | - | createElement(type, props, ...children) v0.13 |
\- | - | |
\- | - | cloneElement(element, props, ...children) v0.13 |
\- | - | isValidElement() v0.13 |
SSR/服务端渲染 | - | ReactDOM.renderToString() v0.13 renderToString(reactNode, options?) v18.0 |
\- | - | ReactDOM.renderToStaticMarkup() v0.13 renderToStaticMarkup(reactNode, options?) v18.0 |
\-Web Streams | - | renderToReadableStream(reactNode, options?) v18.0 |
\-Node.js Streams | - | renderToPipeableStream(reactNode, options?) v18.0 |
\- | - | renderToStaticNodeStream(reactNode, options?) v18.0 |
\- | - | |
SSG/静态站点生成 | prerender() v19.0 | - |
\- | prerenderToNodeStream() v19.0 | - |
HTML元数据 | <meta> v19.0 | - |
\- | <title> v19.0 | - |
\- | <script> v19.0 | - |
预加载资源 | preinit() v19.0 | - |
\- | preload() v19.0 | - |
\- | prefetchDNS() v19.0 | - |
\- | preconnect() v19.0 | - |
\- | preinitModule() v19.0 | - |
\- | preloadModule() v19.0 | - |
服务器组件 | cache() v19.0 | - |
组件上下文
分类 | Hooks | Classes |
---|---|---|
创建 | React.createContext() v16.3 | |
提供 | <SomeContext.Provider> v16.3 | static contextType v16.3/ES2022 |
读取和订阅 | useContext() v16.8 <SomeContext.Consumer> v16.3 | this.context v0.12 |
调试 | - | Context.displayName |
DOM 实例
分类 | Hooks | Classes |
---|---|---|
DOM 实例 | ref v0.13 | ref v0.13 |
\-获取 | useRef() v16.8 | React.createRef() v16.3 |
\-立即更新 | - | ReactDOM.flushSync() v0.13 |
\-强制重新渲染 | useSyncExternalStore() v18.0 | forceUpdate() v0.13 |
\-查找 | - | |
组件实例 | useImperativeHandle() v16.8 | React.forwardRef() v16.3 |
\-挂载 | - | ReactDOM.createPortal() v16.0 |