javascript - 无法访问使用 React.lazy 导入的组件的静态属性
问题描述
我在这样的文件中有一个反应功能组件-
const Slot: React.ElementType = () => null;
const Component = ({ children }): JSX.Element | null => {
const childrenArr = React.Children.toArray(children) as React.ReactElement[];
const slot = childrenArr.find(child => child.type === Slot);
return (
<div>
<div>Hi</div>
{slot && slot.props.children}
</div>
);
};
Component.Slot = Slot;
export default Component;
我正在使用这个组件,将它导入另一个使用React.lazy
const Comp = React.lazy(() => import(/* webpackChunkName: "comp" */ './Component'))
我正在渲染这个组件React.Suspense
,就像这样
<Suspense fallback={null}>
<Comp>
Welcome
<Comp.Slot>Robert</Comp.Slot>
</Comp>
</Suspense>
但Robert
不是渲染。另外,我收到 Typescript 错误Comp.Slot
,说
Property 'Slot' does not exist on type 'LazyExoticComponent<{ (): Element | null; Slot: FunctionComponent<any>;}>'.
解决此问题的最佳方法是什么?请帮忙。
解决方案
我相信lazy
仅适用于默认导出,并且仅适用于导出的确切组件,因为它会围绕它创建某种 HOC。
你能做的就是做这部分
<Comp>
Welcome
<Comp.Slot>Robert</Comp.Slot>
</Comp>
独立组件并在其上使用惰性。
推荐阅读
- haskell - 将 GTK3 小部件颜色设置为计算值的正确方法
- aem - CRXDE 不允许我上传/下载包
- mysql - 如何通过命令行比较两个 MARIADB 模式
- rust - 使用实现 `tokio::io::AsyncWrite` 的动态类型对象
- drake - 有没有办法将上下文中不同大小的向量存储为离散状态
- python - django 建立模型之间的正确关系
- javascript - 如果金额达到一定值,则删除运费
- ios - 不断收到错误“预计解码数组
但找到了字典| 迅速 - c++ - 严重包含在字符串中,除非我将它存储在 C++ 类中
- c++ - 函数模板和“正常”函数之间奇怪的不一致