微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 react-router Link 访问 React 打字稿中的 props.location?

如何解决如何使用 react-router Link 访问 React 打字稿中的 props.location?

我尝试了此处描述的方式 React Typescript - How add Types to location.state when passed in a Route 但它对我不起作用。我希望能够在用户来自 User.js 时访问页码

User.js

<Link to={{ pathname: "/List",state: { page: '4' }}}> Click Here </Link>

List.js

interface Props {
  filter1: string; 
  filter2: string;
  location ?: RouteComponentProps<{ location: string },{},{ state: string }>;
}

export default function List ({filter1,filter2,location}: Props) {
  console.log(location); //Shows undefined
}

filter1 和 filter2 将作为来自另一个组件的 props 传递,它们与 User.js 无关

解决方法

如果 location 中的 props 对您不可用,则意味着您定义的路由略有不同,即没有Route Props 传递给您的组件。

要传递这些道具,您可以define your routes

<Route path="/some-path" component={SomeComponent}/>

<Route path="/some-path" render={props => <SomeComponent {...props} />}/>

如果您定义路由,例如:

<Route path="/some-path">
  <SomeComponent />
</Route>

route props (history,location,match) 不会传递给你的组件。但这并不意味着定义 Route 的方式不正确。它实际上是定义路由的首选方式。因为我们可以使用 useHistoryuseLocation etc. 之类的钩子来获取函数组件中的历史记录和位置。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。