我有以下组件,可以在需要时(路由变更时)加载我的组件。
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都会卸载和重新挂载惰性加载组件(而不是重新渲染)。这导致所有内部状态重置,这当然是不希望的。请问有人能推荐任何解决方案吗?
此处链接展示了这个问题。