Реактивно загружаемый импорт из нескольких классов экспортируемых js

Как импортировать из нескольких экспортируемых классов js файл в react-loadable,
Я пытаюсь импортировать CustomButton от MyButton.js с помощью react-loadable в Home.js, Это единственный способ, которым я знаю, это не работает.

MyButton.js

import {
  CustomButton,
  BUTTON_STYLE,
  BUTTON_TYPE,
  BUTTON_SIZE,
  BUTTON_ALIGN,
  COLOR
} from './buttons';
module.exports = {
  CustomButton,
  BUTTON_STYLE,
  BUTTON_TYPE,
  BUTTON_SIZE,
  BUTTON_ALIGN,
  COLOR
}

Home.js

const AsyncButton = Loadable({
  loader: () => import('../../button/MyButton'),
  loading: Loading
});

Пожалуйста помоги. Заранее спасибо.

3 ответа

Решение

Я смог сделать это так:

const AsyncButton = Loadable({
  loader: () => import('../../button/MyButton').then(module => module.CustomButton),
  loading: Loading
});

Тем не менее, я не могу получить его, где одна переменная содержит все другие экспорты.

Я нашел решение от

реактивно-загружаемая документация

Loadable({
  loader: () => import('./my-component'),
  render(loaded, props) {
    let Component = loaded.namedExport;
    return <Component {...props}/>;
  }
});

Работает.

Я знаю, что это ответ, но я нашел способ получить одну переменную, которая будет содержать все именованные экспорты. Увидеть ниже.

    AsyncSubSites = namedComponent => Loadable({
    loader: () =>
      import( /*webpackChunkName: "SubSites"*/ "./SubSites/SubSites"),
    loading: () => <Loading/>, //loader/spinner etc.
    modules: ["SubSites"],
    render(loaded, props) {
      let Component = loaded[namedComponent];
      return <Component {...props}/>;
    }
  })

и используется с реакции-маршрутизатором как...

<Route path="/:slug" exact component={AsyncSubSites('Membership')} />
<Route path="/:slug" exact component={AsyncSubSites('About')} />

и все остальное по имени экспорт

Другие вопросы по тегам