【发布时间】:2019-01-17 22:44:19
【问题描述】:
我正在尝试进行基于组件的代码拆分。 Webpack 3.
loadDecisions = async () => {
if (!this.TmplDecisions) {
this.TmplDecisions = await import(
/* webpackChunkName: "chunk-templates-decisions" */ 'src/components/decisions'
);
}
return this.TmplDecisions;
}
renderDecisions () {
if (this.TmplDecisions && this.TmplDecisions.default) {
return <this.TmplDecisions.default
{...this.props}
logOpenEvent={this.logTagOpenEvent}
/>;
} else return null;
};
该组件在开发工具调试器中显示良好,但呈现为 <undefined></undefined>
有人可以帮忙吗?
【问题讨论】:
-
嗯,这里一切都很好。但可能的一点是
renderDecisions在哪里以及如何使用?它是在一个单独的类中(类似于decisionLoader,还是您直接在另一个组件中使用它?我猜是更新有问题。 -
@MojtabaIzadmehr 正在从
render() -> renderLayout()方法调用堆栈调用renderDecisions方法。据我在开发工具中看到的,renderDecisions返回一个VNode。仍然不知道发生了什么。 -
我想问题是你从来没有指出组件已成功导入,并重新渲染组件(这可能是你可以在 devTools 中看到它的值但没有渲染的原因,但是,如果组件仍未导入而不是
),您应该会遇到错误。尝试一些简单的事情并检查它是否改变了任何东西。在 loadDecisions,就在返回之前,用this.forceUpdate()强制更新组件。 -
这可能是反应中的一个错误,也请在那里报告。因为在任何情况下它都不应该返回
。 React 调用函数式组件,并在确定函数的类型后创建类的实例。所以如果组件本身不是一个组件,它应该返回一个错误。 -
我注意到的一件事是,无论我为要导入的组件提供什么路径,它总是会导入块。即使路径是错误的。这就是事情开始变得混乱的地方。
标签: javascript reactjs webpack preact