如何将withRouter()与通用组件一起使用

时间:2020-09-04 03:34:27

标签: reactjs typescript react-router

我有一个像这样的组件:

function GenericComponent<T>(props: RouteComponentProps) {
    ...
}

export default withRouter(GenericComponent)

尝试与<GenericComponent<SomeModel> />一起使用时,出现以下错误:

期望0个类型参数,但得到1个。

如何将T传递给withRouter?

1 个答案:

答案 0 :(得分:1)

通常您不能那样做,我想您可以通过将一个函数用作带有通用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 />
  )
}