Как одновременно загружать несколько компонентов в React

#reactjs #lazy-evaluation

#reactjs #ленивая оценка

Вопрос:

 const {A, B, C, D} = React.lazy(() => import("../test")); 
 

Деструктурирование нескольких компонентов из одной папки и применение lazy ко всем компонентам? Возможно ли это?

Комментарии:

1. Вы пробовали?

Ответ №1:

То, что вы описали конкретно, невозможно.

Теоретически возможно уничтожить импорт, но вы не сможете взаимодействовать с ним вне переданного замыкания lazy , потому что оно еще недоступно. Помните, динамический импорт — это функция не React, а браузера. Вы можете уничтожить динамически импортируемый модуль, но для этого потребуется использовать await .

 const {A, B} = await import('your/module');
 

В контексте React это остановит все выполнение в файле, что, очевидно, не то, что мы хотим.

Для того, чтобы он работал должным образом, вам нужно будет выполнить деструкцию в lazy обратном вызове.

Я не смог это проверить, но теоретически это должно работать:

 const ComponentA = React.lazy(() => {
    const {A} = await import("../test");
    return A
})

const ComponentB = React.lazy(() => {
    const {B} = await import("../test");
    return B
})