React 实现 动态加载组件

import { Button } from 'antd'
import React, { useState, lazy, Suspense } from 'react'

//这个地方动态加载组件
//const Item = lazy(() => import('./Module.jsx')) //错误
const [Item, setItem] = useState(null)//正确
setItem(lazy(() => import('./Module.jsx')))

export function Test() {
  const [showPreview, setShowPreview] = useState(false)
  return (
    <div>
      <Button onClick={() => setShowPreview(true)}>ShowPreview</Button>
      {showPreview && (
        <Suspense fallback={<></>}>
          <Item />
        </Suspense>
      )}
    </div>
  )
}

./Module.jsx

这里注意导出的方式为 export default
export default () =>{
  return (
    <>
      test
    </>
  )
}

路由懒加载:

//"./views/Filter/Filter"
export default ():JSX.Element=> <div>lazy</div>
const Filter = lazy(() => import("./views/Filter/Filter"));

<Route
        path="/filter"
        element={
          <Suspense fallback={<div>loading...</div>}>
            <Filter />
          </Suspense>
        }
      >
    <Route path="subOutlet" element={<div>sub other</div>}></Route>
</Route>
 posted on 2023-03-18 17:28  laremehpe  阅读(390)  评论(0编辑  收藏  举报