React 18 新特性(二):Suspense SuspenseList
本文已收录在 Github: https://github.com/beichensky/Blog 中,欢迎 Star,欢迎 Follow!
前言
本文介绍了 React 18 版本中 Suspense 组件和新增 SuspenseList 组件的使用以及相关属性的用法。并且和 18 之前的版本做了对比,介绍了新特性的一些优势。
一、回顾 Suspense 用法
早在 React 16 版本,就可以使用 React.lazy 配合 Suspense 来进行代码拆分,我们来回顾一下之前的用法。
-
在编写
User组件,在User组件中进行网络请求,获取数据User.jsximport React, { useState, useEffect } from 'react';// 网络请求,获取 user 数据 const requestUser = id =>new Promise(resolve =>setTimeout(() => resolve({ id, name: `用户${id}`, age: 10 + id }), id * 1000));const User = props => {const [user, setUser] = useState({});useEffect(() => {requestUser(props.id).then(res => setUser(res));}, [props.id]);return 当前用户是: {user.name}; };export default User; -
在 App 组件中通过
React.lazy的方式加载User组件(使用时需要用Suspense组件包裹起来哦)App.jsximport React from "react"; import ReactDOM from "react-dom";const User = React.lazy(() => import("./User"));const App = () => {return (<> >); };ReactDOM.createRoot(document.getElementById("root")).render(); -
效果图:

-
此时,可以看到 User 组件在加载出来之前会
loading一下,虽然进行了代码拆分,但还是有两个美中不足的地方-
需要在
User组件中进行一些列的操作:定义state,effect中发请求,然后修改s
-
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
