react lazy和suspense
Posted lxz-blogs
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了react lazy和suspense相关的知识,希望对你有一定的参考价值。
代码拆分
- Webpack-Code Splitting
- import import(‘./detail.js‘).then(...)
import React, { Component,lazy,Suspense } from ‘react‘; const About = lazy(()=>import(/* webpackChunkName:"about" */ ‘./About‘)) //ErrorBoundary 错误边界 //componentDidCatch class App extends Component { state={ hasError:false } // 和componentDidCatch效果等同 static getDerivedStateFromError(){ return{ hasError:true } } // componentDidCatch(error,info){ // this.setState({ // hasError:true // }) // } render() { const {hasError} =this.state if(hasError){ return <div>Error</div> } return <div> <Suspense fallback={<div>loading</div>}> <About /> </Suspense> </div> } } export default App;
错误边界用法
class PotentialError extends React.Component { constructor(props) { super(props); this.state = { error: false }; } componentDidCatch(error, info) { this.setState({ error, info }); } render() { if (this.state.error) { return <h1>Error: {this.state.error.toString()}</h1>; } return this.props.children; } }
<PotentialError><AwesomeApp /></PotentialError>
以上是关于react lazy和suspense的主要内容,如果未能解决你的问题,请参考以下文章
如何使用React.lazy和Suspense进行组件延迟加载
使用 React.lazy、Suspense 和 react-router-dom 进行代码拆分不起作用