在我的项目中,我曾经依赖 react-loadable 来做一些代码拆分,与 react-router 一起延迟加载。就像是:
<Route component={component} />
和
Component = Loadable({
loader: () => import(/* webpackChunkName: "Analyze" */ "./components/Analyze"),
})
分析组件实现componentDidMount
和使用路由器的history.push
状态变化。当一个新的 url 被推送并改变了一些参数,但仍然导致这个相同的“分析”组件时,只有componentDidUpdate
被调用。我更新了这段代码以使用 React.lazy:
<Route component={(_props: any) =>
<LazyComponentWrapper>
<Component {..._props} />
</LazyComponentWrapper>
} />
和
Component = React.lazy(() => import(/* webpackChunkName: "Analyze" */ "./components/Analyze")),
和
function LazyComponentWrapper({ children }) {
return (
<Suspense fallback={<div>{LOADING}</div>}>
{children}
</Suspense>
);
但是现在componentDidMound
每次都意外调用。我不清楚这与反应路由器有关React.lazy
还是与反应路由器有关。有什么线索吗?