【发布时间】:2018-05-27 11:33:05
【问题描述】:
我正在尝试使用 react-loadable 实现延迟加载组件。我已按照他们的指南进行操作,但无法正常工作。
我有 3 个可加载的组件
const LazyOne = Loadable({
loader: () => import(/* webpackChunkName: 'lazy-1' */"./components/LazyOne"),
loading: <h1>wait</h1>
});
const LazyTwo = Loadable({
loader: () => import(/* webpackChunkName: 'lazy-2' */"./components/LazyTwo"),
loading: <h1>wait</h1>
});
const LazyThree = Loadable({
loader: () => import(/* webpackChunkName: 'lazy-3' */"./components/LazyThree"),
loading: <h1>espera</h1>
});
起初,webpack 构建会中断,因为它在导入时抛出了 unexpected input 错误。所以我将此添加到我的 .babelrc
"plugins": [
// all my other plugins...
"syntax-dynamic-import"
]
现在构建成功,如果我使用 webpack-bundle-analyzer 我会看到所有惰性构建都正确构建!
但是当我访问这样呈现的页面时:
render() {
return (
<ErrorBoundary>
<LazyOne {...this.props} />
</ErrorBoundary>
);
}
这会抛出:
对象作为 React 子级无效(找到:[object Promise])。如果 你的意思是渲染一组孩子,使用一个数组来代替。
我在 react-loadables github 甚至 webpack 中的代码拆分部分都没有看到任何提及这一点。我做错了什么?
编辑
我做了一些改动,发现它无法加载惰性块。
我的网址是这样的:localhost:3000/some/rest/1/edit
应用正在尝试获取:localhost:3000/some/rest/1/lazy-1.bundle.js
我应该在哪里指定路径?
【问题讨论】:
-
您在哪个组件中收到此错误?
-
@Madhavan.V 当我尝试渲染任何惰性组件时。在我的示例中,我尝试渲染 LazyOne。
-
你能检查控制台是否有错误吗,我在尝试在渲染方法中显示一些值时遇到了这种问题。
-
@Madhavan.V 这与我在问题中发布的错误完全相同:Objects are not valid as a React child (found: [object Promise])。如果您打算渲染一组子项,请改用数组。
-
我也遇到了一些问题。我会尝试从
react-loadable中删除它以确保组件正常工作。我有一个错误,它正在从内部组件中吞下错误。
标签: javascript reactjs webpack code-splitting