React16 suspense還不能用于處理副作用實(shí)現(xiàn)異步請求數(shù)據(jù)再渲染,生產(chǎn)環(huán)境不成熟
異步模式:請求數(shù)據(jù)->渲染組件 等待異步操作結(jié)束才開始渲染組件 實(shí)現(xiàn)一個(gè)異步組件
傳統(tǒng)模式:渲染組件->請求組件->再渲染組件
可以配合React.lazy實(shí)現(xiàn)懶加載,按需加載,減少首屏?xí)r間
例子:
const LazyComponent = React.lazy(() => import('./test.js'))
export default function Index(){
return <Suspense fallback={<div>loading...</div>} >
<LazyComponent />
</Suspense>
}
React.lazy接收一個(gè)函數(shù),這個(gè)函數(shù)需要?jiǎng)討B(tài)的調(diào)用import,并且返回一個(gè)Promise,這個(gè)promise需要resolve一個(gè)default export 的React組件