如何使useRouteMatch与React-Router中的类型一起使用

基拉

我正在使用这样的钩子从路线中获得比赛

const match = useRouteMatch('/chat/:id');

然后我想将其传递给子组件。但是当我将其传递给我时,我得到了这个错误

Type 'match<{}> | null' is not assignable to type 'match<MatchParams>'.

在m子组件中,我正在这样做

import { RouteComponentProps } from 'react-router';

interface MatchParams {
  id: string;
}

interface ChildProps extends RouteComponentProps<MatchParams> {}

const Child = ({ match }: ChildProps ): React.ReactElement => {
  return (
    <>
      <div>{match}</div>
    </>
  );
};

export default Child ;

有人可以帮我弄清楚如何正确键入所有内容吗?

苏珊斯-

如果查看useRouteMatchhook的返回值,则可以是以下两种类型之一

match<{}> | null

useRouteMatch如果您提供的路径不匹配,则返回null。当您将其传递给子组件时,您可以确定它是正确的匹配项,但TS不确定,因为在传递给它之前没有检查过假值的检查。

返回类型为,match而不是RouteComponentPropsmatch是一个泛型,默认情况下为空对象,这是您希望输入的参数的位置。要使TS知道,您必须将其传递。

这就是您必须输入的方式。

Parent.tsx

export interface MatchParams {
  id: string;
}

const match = useRouteMatch<MatchParams>('/chat/:id');

return <Child match={match} />

Child.tsx

import { match } from 'react-router';
import { MatchParams } from './Parent';

interface ChildProps {
  match: match<MatchParams> | null
}

const Child = ({ match }: ChildProps ): React.ReactElement => {
  return (
    <>
      <div>{match}</div>
    </>
  );
};

export default Child ;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

泛型类型如何在Scala中与继承一起使用?

为什么React Router无法与<Switch>一起使用?

在C#7中,如何“滚动我自己的”类似于任务的类型以与异步一起使用?

指针如何与Java中的原始类型一起使用?

意外令牌<与React Router和Nginx一起使用

Symfony:如何使JMS Serializer与严格类型一起使用?

访问Saga中的store.dispatch以与React Router Redux一起使用

如何与Kotlin中的类型安全构建器一起使用?

如何获得Material-UI选项卡以与react-router一起使用?

为什么React Router无法与Redux一起使用?

setState无法与React函数中的forloop一起使用

如何将变量传递到子组件中,以便它们与React Router一起使用?

尝试导入错误:未从“ react-router-dom”导出“ useRouteMatch”

.getClass()。getName()方法如何与int类型一起使用?

如何注册将与值类型一起使用的DependencyProperty

如何使类型类与Scala中的异构列表一起使用

如何配置k8s入口以与react-router-dom一起使用

如何在.Net中与不同类型的使用者一起使用RabbitMq消息?

将React contextTypes与react-router一起使用

不断发生违规:将createBrowserHistory与[email protected]一起使用时,元素类型无效

如何使模板类型推导与引用一起使用?

React JS + React Router与$ .get一起使用,但不适用于$ .ajax PUT

类型推断如何与可选参数一起使用?

如何使条件与数据类型 BOOLEAN 一起使用

将 `@headlessui/react` 中的 `ListBox` 与 Mobx 一起使用?

React / Redux - 使用 useRouteMatch 设置初始状态

将映射类型与模板文字类型一起使用时如何使用原始映射键?

我如何让类型检查与 React forwardRef 一起使用

如何从使用python组合在一起的相同类型的字符串中删除