Существует ограничение при использовании динамического импорта с «переменными частями», такими как import(`${path}`)
.
При создании пакета Webpack
В вашем случае, когда был вызван компонент import(`${path}`)
в Dynamic
, webpack создал пакет. Этот комплект был для FirstComponent
компонента. Внутри этого пакета веб-пакет содержит список компонентов, которые можно динамически импортировать с помощью «переменных частей» в компоненте FirstComponent
. Он содержит только файлы, которые находятся в той же папке, где находился компонент FirstComponent
. Это потому, что вы использовали import(`${path}`)
в FirstComponent
.
Все это происходит потому, что webpack при компиляции не знает, какой будет точный путь импорта во время выполнения, так как вы используете динамический импорт с «переменными частями».
Во время запроса приложения React
Когда import(`${path}`)
было выполнено в Dynamic
Компонент. Пакет для FirstComponent
был запрошен. Как только пакет был получен, и он выполнил свой код, а path
, который вы указали как компонент props
- FirstComponent
, не был в списке компонентов, которые можно динамически импортировать с помощью «переменных частей».
То же самое относится и к компоненту Dynamic
, если вы попытаетесь динамически импортировать файлы с «переменными частями» для файлов, которые находятся вне папки src
, вы получите ту же ошибку.
Так что для решения этой проблемы у вас есть несколько вариантов
1) поместить оба файла в одну папку
т.е.
'src/Components/FirstComponent'
'src/Components/Footer'
И использовать
// In FirstComponent.js
componentDidMount() {
const { path } = this.props;
import(`${path}`)
.then(module => this.setState({ module: module.default }))
}
{Component && <Component path='./Footer' />} // Index.js
2) быть более конкретным, насколько это возможно
т.е.
// In FirstComponent.js
componentDidMount() {
const { path } = this.props;
import(`../FooterComp/${path}`)
.then(module => this.setState({ module: module.default }))
}
и использовать
{Component && <Component path='Footer' />} // In index.js