Динамическая загрузка react компонентов с помощью import
В коде у блоггера есть require, который динамически загружает компонент из папки:
import React from 'react'
import { useParams } from 'react-router-dom'
const generatePage = (page) => {
const component = () => require(`../pages/${page}`).default
try {
return React.createElement(component())
} catch (error) {
console.warn(error)
return React.cloneElement(()=> 404)
}
}
function PageRenderer() {
const {page} = useParams()
const pageName = `${page}`
return generatePage(pageName)
}
export default PageRenderer
Я попробовал заменить на import, компонент, вероятно, находится но сам импорт возвращает Promise. Не понимаю как, в итоге, вернуть компонент с этим обещанием.
После подсказки попробовал такой код, но увы так не сработало:
function PageRenderer() {
const { page } = useParams()
const { component } = lazy(() => import(`../pages/${page}`))
return (
<Suspense fallback={<div>Loading...</div>}>
{ component }
</Suspense>
)
}
export default PageRenderer
Источник: Stack Overflow на русском