react
17 升级点jsx
在16中会编译为React.createElement
,在17有新的jsx
转换,不再需要在文件内部引入React
document
上移到root
上react
树内部冒泡,不会传播到外部React
17 改进了错误边界的行为,确保在捕获错误后能更可靠地重置组件状态。错误边界是react
组件,用于捕捉并处理子组件树中的js
错误,防止整个应用崩溃
在react16及之前,通过componentDidCatch
生命周期捕获错误,react17在此基础上增强了状态管理的可靠性
react17中,引入更严格的状态管理机制:确保错误捕获后组件状态会被重置到稳定状态,未完成的副作用被正确处理,避免遗留状态
react17的错误传播中,promise或者setTimeout中抛出的错误能被更可靠地捕获,同时多层错误边界的嵌套行为更加一致,避免错误穿透传播
react17鼓励使用 getDerivedStateFromError 静态方法处理错误后的 UI 降级,与 componentDidCatch 配合更紧密
react
18 升级点通过createRoot
创建根节点,开启并发渲染
自动支持以下特性
时间切片,进行可中断渲染,让复杂ui渲染不会阻塞主进程,保持页面的响应性
过渡渲染,将更新标记为“紧急”和“非紧急”,有限处理用户交互。useTransition
钩子可以标记更新为非紧急
createRoot
代替render
,自动支持并发模式react18扩大了批处理的范围,将多次状态更新合并为一次渲染,减少不必要的渲染次数
React 18 改进了服务端渲染(SSR),支持:
选择性 hydration:优先渲染可见内容,提高首屏加载速度。 流式传输:分块传输 HTML,减少 TTFB(Time To First Byte)。
useId
生成唯一的id,适用于服务端渲染和客户端渲染,确保水合的时候环境匹配
useTransition
标记更新为非紧急,适用于过渡渲染
useDeferredValue
延迟更新值,适用于非紧急状态更新
mobx
redux
区别,用途,优缺点,为什么选择mobx
都是react
csr
ssr
webpack
plugin
在测试环境显示版本和git
提交信息ahooks
的useCountdown
同款写一个能显示倒计时、重置时间、暂停、结束时触发回调
Promise
依次调用,并带有重试次数返回失败的Promise
和或者最后一个Promise
的结果