首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >要在props参数下添加附加属性,RouteComponentProps的类型应该是什么?

要在props参数下添加附加属性,RouteComponentProps的类型应该是什么?
EN

Stack Overflow用户
提问于 2021-09-23 15:51:57
回答 1查看 193关注 0票数 0

我有以下使用react-router-dom的组件:

代码语言:javascript
运行
复制
<Route path='/restaurants/:id' render={props => (
  <Restaurant {...props} user={user} />
)} />

现在,在我的Restaurant.tsx代码中,我似乎找不出什么类型应该是下面的props的正确类型:

代码语言:javascript
运行
复制
const Restaurant = (props: RouteComponentProps<{id: string}>) => {
  const a = props.match.params.id;
  const b = props.user;

  ...
}

对于RouteComponentProps<{id: string}>类型,会为a分配一个没有错误的值。但是,b并非如此

代码语言:javascript
运行
复制
Property 'user' does not exist on type 'RouteComponentProps<{ id: string; }, StaticContext, unknown>'

props的类型应该是什么,这样我才能获得使用props.user传递给组件的额外属性user={user},而不会出现任何类型错误?

EN

Stack Overflow用户

回答已采纳

发布于 2021-09-24 04:31:53

Restaurant组件的属性声明接口,并扩展RouteComponentProps接口。

代码语言:javascript
运行
复制
import React from 'react';
import { Route, RouteComponentProps } from 'react-router-dom';

interface RestaurantProps extends RouteComponentProps<{ id: string }> {
  user: any;
}
const Restaurant = (props: RestaurantProps) => {
  const a = props.match.params.id;
  const b = props.user;
  return <div>Restaurant</div>
}

const App = () => {
  const user = {};
  return (
    <Route
      path="/restaurants/:id"
      render={(props) => <Restaurant {...props} user={user} />}
    />
  );
};

TypeScript Playground

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69303245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档