如何从js
中的多类导出的react-loadable
文件导入。
我正在尝试使用CustomButton
中的MyButton.js
从react-loadable
导入Home.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
}
const AsyncButton = Loadable({
loader: () => import('../../button/MyButton'),
loading: Loading
});
请帮忙。提前谢谢。
答案 0 :(得分:6)
我能够这样做:
const AsyncButton = Loadable({
loader: () => import('../../button/MyButton').then(module => module.CustomButton),
loading: Loading
});
但是,如果一个变量包含所有其他导出,我无法得到它。
答案 1 :(得分:1)
我找到了
的解决方案Loadable({
loader: () => import('./my-component'),
render(loaded, props) {
let Component = loaded.namedExport;
return <Component {...props}/>;
}
});
它的工作。
答案 2 :(得分:0)
我知道答案是正确的,但是我想出了一种方法来获取一个包含所有命名出口的变量。见下文。
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}/>;
}
})
并与react-router一起用作...
<Route path="/:slug" exact component={AsyncSubSites('Membership')} />
<Route path="/:slug" exact component={AsyncSubSites('About')} />
以及其他任何命名的导出