使用react路由器,can';即使存在参数,也不提取参数(使用typescript)

使用react路由器,can';即使存在参数,也不提取参数(使用typescript),typescript,react-router,Typescript,React Router,我正在尝试切换一个旧项目,以使用react和react路由器。我对项目中使用的typescript也不熟悉,因此任何解释都将不胜感激 该路线的定义如下: <Route path="/deployments/:somePrefix/:someId" component={SomeDetailPage}/> 但是,我知道这些参数是存在的,因为当我尝试将这些参数作为div的一部分进行测试和放置(只是随机测试)时,div不会加载,我会得到以下错误: ERROR in [at-l

我正在尝试切换一个旧项目,以使用react和react路由器。我对项目中使用的typescript也不熟悉,因此任何解释都将不胜感激

该路线的定义如下:

<Route
   path="/deployments/:somePrefix/:someId"
   component={SomeDetailPage}/>
但是,我知道这些参数是存在的,因为当我尝试将这些参数作为div的一部分进行测试和放置(只是随机测试)时,div不会加载,我会得到以下错误:

ERROR in [at-loader] src/public/components/some-detail-page.tsx:25:97
    Property 'somePrefix' does not exist on type '{}'

ERROR in [at-loader] src/public/components/some-detail-page.tsx:25:97
    Property 'someId' does not exist on type '{}'
Objects are not valid as a React child (found: object with keys {somePrefix, someId})

你是如何为
SomeDetailPage
输入道具的

您需要确保从
react router dom
正确添加
RouteComponentProps

例如,您将需要一些与

import * as React from 'react';
import { RouteComponentProps } from 'react-router-dom';

// Define what your match should look like
interface SomeDetailPageMatch {
    somePrefix: string;
    someId: string;
}

interface SomeDetailPagePropsFromParent {
    // Your custom props here
}

type SomeDetailPageProps = SomeDetailPagePropsFromParent &
    RouteComponentProps<SomeDetailPageMatch>; // Provide your match as generic

class SomeDetailPage extends React.Component<SomeDetailPageProps> {

...
import*as React from'React';
从'react router dom'导入{RouteComponentProps};
//定义你的比赛应该是什么样子
接口SomeDetailPageMatch{
somePrefix:string;
someId:字符串;
}
接口SomeDetailPagePropsFromParent{
//你的定制道具在这里
}
键入SomeDetailPageProps=SomeDetailPagePropsFromParent&
RouteComponentProps;//将您的匹配项作为通用项提供
类SomeDetailPage扩展React.Component{
...
然后它应该理解
this.props.match.params.someId
this.props.match.params.somePrefix
存在