【发布时间】:2019-11-15 04:17:03
【问题描述】:
我有以下组件,可以在需要时(在路线更改时)加载我的组件。
function DynamicLoader(props) {
const LazyComponent = React.lazy(() => import(`${props.component}`));
return (
<Suspense fallback={<div>Loading...</div>}>
<LazyComponent />
</Suspense>
);
}
我的路由(使用 React-Router)如下所示:
<Switch>
{routes.map((prop, key) => {
return (
<Route
exact
path={prop.path}
render={() => (
<DynamicLoader component={prop.component} />
)}
key={key}
/>
);
})}
</Switch>
就为每个路由安装组件而言,这工作正常,但是看起来随着父组件的每次更改,React 正在卸载并重新安装延迟加载的组件(而不是重新渲染)。这会导致所有内部状态重置,这当然是不希望的。任何人都可以推荐任何解决方案吗? 这是显示此问题的codesandbox。
【问题讨论】:
标签: reactjs react-router lazy-loading react-hooks