前端速看(React18更新一览清单)
截至到现在,React18已经出来半个月了,是否还有小伙伴不太了解呢? 我给大家整理一份更新清单,包含了较常用的更新,列举了一些不错的案例和链接,方便大家快速上手和深入了解!浏览器最低兼容提升 由于新版react使用了Promise,Symbol,Object.assign,所以要像IE和其他过于低版本的浏览器需要借助polyfill了
新的根API
// 之前根API,使用ReactDOM.render
ReactDOM.render(, document.getElementById('root'))// 现在为了更符合工程学,和vue3一样,都引入了新的根api
import { createRoot } from 'react-dom/client';
const el = document.getElementById('app');
const root = createRoot(el);
root.render();
异步任务也将"批处理"
// 之前在异步任务里react无法拦截hooks进行批处理
setTimeout(()=>{ // 这样会更新两次视图
setCount(val => val+1)
setNum(val => val+1)
})
// 但是在18里将只会更新一次
转换更新API
// 当我们从一个视图转到另个视图时,一般都是非紧急更新,不像点击事件这种需要视图立即进行反馈
// 过渡更新不会阻塞与其他视图的交互// 函数组件
import {useTransition} from 'react';
function App() {
// isPending 表示是否在过渡状态中
const [isPending, startTransition] = useTransition();
const [count, setCount] = useState(0);
function handleClick() {
startTransition(() => {
setCount(c => c + 1);
})
}return ({isPending && }
);
}// 类组件 不提供isPending这种状态值
import {Component, startTransition} from 'react';
class App extends Component{
// ...
// 紧急事件
setInputValue(input);
startTransition(() => {
// 过渡事件
setSearchQuery(input);
});
// ...
}
延迟hook: useDeferredValue
// 此hook有点类似于防抖,但是它没有固定的时间延迟,它会在React完成其他工作后立即进行更新,并且是可中断的,不会阻碍用户与其他视图的交互const [deferredValue] = useDeferredValue(value);
Suspence 如果组件树的一部分尚未准备好显示,Suspense 允许您以声明方式指定组件树的加载状态:
// 我们来看这样一个例子,在过渡期间会变透明
const [isPending, startTransition] = useTransition();
function handleClick() {
startTransition(() => {
setTab('comments');
});
}}>{tab === 'photos' ? : }// useDeferredValue 结合 Suspense, 防止子组件在紧急更新时重新渲染
function Typeahead() {
const query = useSearchQuery('');
const deferredQuery = useDeferredValue(query);
const suggestions = useMemo(() =>
,
[deferredQuery]
);
return (
<>{suggestions}>
);
}
还有更多实用的例子详看:suspense官方详解
useId
// 生成稳定的唯一ID
function Checkbox() {
const id = useId();
return (
<>
>
);
};
// 多个ID时
function NameFields() {
const id = useId();
return ();
}
TypeScript注解修复 【前端速看(React18更新一览清单)】children现在需要明确定义出来,具体原因可看我之前的文章 React+TypeScript必备
interface MyButtonProps {
color: string;
children?: React.ReactNode;
}
以上列举了较常用的更新,要想看更详细的更新细节可以进入 React18.0.0新功能介绍
推荐阅读
- 前端开发(解决异步回调必备技能——Async/Await和Promise)
- 前端酷炫效果参考_你看见过哪些很炫酷的前端页面特效()
- React|React + TypeScript + Taro前端开发小结
- 前端演示购物车案例、生命预期钩子函数、与后端交互演示
- 常用的计算机优化方法,前端性能优化常用的五个优化方法分享
- 作为前端,需要知道这些工具,解放我的重复劳动力
- Android 开发转型前端准备知识
- 前端基础和框架使用|Vue的异步渲染axios
- 前端优秀开源项目|xgplayer.js 西瓜播放器 - 字节跳动团队出品的免费开源 HTML5 视频播放组件,内置解析器、也能节省流量
- 前端优秀开源项目|Vuestic UI - 免费开源的高质量 Vue3 UI 组件库,还内置了漂亮的 Vuestic Admin 后台框架