reactjs - 如何将 withRouter() 与通用组件一起使用
问题描述
我有一个这样的组件:
function GenericComponent<T>(props: RouteComponentProps) {
...
}
export default withRouter(GenericComponent)
尝试将其与 一起使用时<GenericComponent<SomeModel> />
,出现以下错误:
预期 0 类型参数,但得到 1。
我如何传递T
给 withRouter?
解决方案
通常你不能那样做,我认为你可以通过让一个函数作为工厂工作并使用泛型T
然后返回具有该类型的组件,如下所示:
function GenericComponent<T>(props: RouteComponentProps<T>) {
// ...
}
export function factory<T>() {
return withRouter((props: RouteComponentProps<T>) => (
<GenericComponent<T> {...props} />
));
}
// Usage
function App() {
const FooWithId = factory<{ id: string }>();
return (
<FooWithId />
)
}
推荐阅读
- arrays - 如何将数组放入数组伪代码
- scala - 如何在没有 Play Framework 的情况下在 Scala 中使用依赖注入?
- css - 如何将 HTML 网站分成 3 个可单独滚动的 div?
- eigen - 与简单的矩阵向量乘法相比,solve() 的性能如何?
- javascript - Javascript:乘法持久性问题提出的解决方案执行超时
- json - Spring MVC - 格式化为 JSON 的数据页,出现错误:无法推断 ResponseEntity<> 的类型参数
- java - 如何使用 putExtra() 和 getExtras() 代码获取 int 值?
- dart - Flutter 从 Firebase 存储中获取下载 URL
- python - 使用 Django / virtualenv 运行 celery 时找不到“__main__”模块
- c# - 创建宏时如何区分两个同名窗口