【发布时间】:2021-04-03 10:32:19
【问题描述】:
我想编写一个 HOC,通过在 TypeScript 中使用 React.lazy 和 React.Suspense 来包装组件,但我不知道如何修复类型错误。
type AsyncComponentFactory<P> = () => Promise<{ default: ComponentType<P> }>;
export function loadable<P>(factory: AsyncComponentFactory<P>): ComponentType<P> {
const LazyComponent = React.lazy(factory);
const WrappedWithLoadableComponent = forwardRef<P>((props: P, ref) => (
<React.Suspense fallback={'loading'}>
<LazyComponent {...props} ref={ref} />
</React.Suspense>
));
WrappedWithLoadableComponent.displayName = 'LazyExoticComponent(loadableComponent)';
return WrappedWithLoadableComponent;
}
const JobsView = loadable(() => import(/* webpackChunkName: "JobsView" */ '@views/Jobs'));
【问题讨论】:
-
有时@ts-ignore 是最佳实践
标签: reactjs typescript react-hooks