use*_*366 3 typescript reactjs
我想在我的全新项目中使用打字稿,但我很难输入 HOC 组件
const withClass = (Wrapped: Component<any, {}, any>, className: string) => {
return props => (
<div className={className}>
<Wrapped />
</div>
);
};
Run Code Online (Sandbox Code Playgroud)
它不适用于此错误
类型错误:“typeof App”类型的参数不可分配给“组件”类型的参数。“typeof App”类型缺少“Component”类型中的以下属性:context、setState、forceUpdate、render 等 3 个。TS2345
那么正确的方法是什么?
Component<...>type 指定 的一个实例React.Component。
如果目的是提供组件本身并且不将 HOC 限制为类组件,那么正确的类型是ComponentType:
const withClass = (Wrapped: React.ComponentType<any>, className: string) => { ... }
Run Code Online (Sandbox Code Playgroud)
最好使用特定的 props 类型而不是any. 如果 props 应该像通常从 HOC 期望的那样传递给包装的组件,那么这个问题也应该得到解决:
const withClass = <P extends {}>(Wrapped: React.ComponentType<P>, className: string) => {
return props => (
<div className={className}>
<Wrapped {...props as P} />
</div>
);
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3031 次 |
| 最近记录: |