美文网首页
Suspense的组件

Suspense的组件

作者: Fantast_d2be | 来源:发表于2022-02-09 11:00 被阅读0次

Suspense的意义

划分页面中需要并发渲染的部分,用同步的代码解决异步问题

目前已支持场景

  • 配合React.lazy实现code spliting
  • 请求数据时解决loading问题
    • 通过React提供的fetch库Relay改造后的异步请求
    • 使用react-cache缓存
  • useTransition
  • useDeferredvalue

Suspense的实现

通过promise状态实现

class Suspense extends React.Component { 
    state = { promise: null } 
    componentDidCatch(e) { 
        if (e instanceof Promise) { 
            this.setState(
            { promise: e }, () => { 
                e.then(() => { 
                    this.setState({ promise: null }) 
                }) 
            }) 
        } 
    } 
    render() { 
        const { fallback, children } = this.props 
        const { promise } = this.state 
        return <> 
            { promise ? fallback : children } 
        </> 
    } 
}

相关文章

  • Vue3 内置组件Suspense

    什么是Suspense Suspense组件可以等待某个异步组件解析完成的前后的显示情况比如一个组件是图片,它里面...

  • Suspense的组件

    Suspense的意义 划分页面中需要并发渲染的部分,用同步的代码解决异步问题 目前已支持场景 配合React.l...

  • VUE3.0 suspense组件

    1.1定义组件 1.2 使用suspense组件渲染效果 结果三秒之前显示Loadding... ,三秒之后显示组...

  • Suspense

    Suspense组件用于在等待某个异步组件解析时显示后备内容。 你可能会想我们会在什么时候使用异步组件? 老实说,...

  • 最佳实践React性能优化

    1: React.lazy和React.Suspense封装dynamic函数动态引入组件 1:基本使用 2:la...

  • React 新特性 lazy&Suspense 及相关错误处理

    lazy&Suspense 基本使用 JS 模块延时加载,做代码拆分 使用 React生命周期 拦截组件加载失败 ...

  • Vue3 Suspense 组件

    本文已整理到 Github,地址 ? blog[https://github.com/lio-zero/blog...

  • vue3 Suspense组件

    异步子组件加载时候会耗费一定的时间,此组件可显示loading提示