我在 React 中有一个结果页面,我想 link 每个结果到一个详细页面,但使用动态 URL

I have a results page in React, and I would like to link each result to a detail page but with dynamic URLs

我在 React 中有一个结果页面,所有值都是从外部 url 通过 API 获取然后呈现的。 现在,我想 link 每个项目结果到其详细信息页面,据我所知,可以由唯一的页面模板或组件呈现 (detailTemplate.js),但 URL 必须是每个结果不同。它是动态计算的,作为项目属性之一。

results.js

 ....
 <ul>
 {data.map((item) => (
    <li>
     <Link to={item.url}>
         <div>item.name </div>
         <div>item.price</div>
     </Link>
    </li>
  )}
</ul>
...

detailTemplate.js

export const DetailPage= (props) => {

    return (
        <div>
            <h3>
                {props.item.title}
            </h3>
            <div>
                {props.item.description}
            </div>
        </div>
        )
}

我怎样才能 link 从 results.js 到 DetailPage 的所有结果?

在react中调用Declarative Routing。您可以像这样使用 <Route /> 组件轻松完成此操作。在您的 App.js 文件中,您可以定义您的路径和一个 slug,稍后您可以在您导航到的组件中访问它。

function App() {
  return (
    <div className="App">
      <Router>
        <Switch>
        <Route exact path="/" component={Results} />
        <Route path="/detail/:slug" component={Details} />
       </Switch>
     </Router>
    </div>
  );
}

您可以像这样在组件中指定路径:

//results.js
<Link
  to={{
    pathname: `/detail/${url}`,
    price:item.price,
    name:item.name
  }}
>
  <div>item.name </div>
  <div>item.price</div>
</Link>;

在您的 detailTemplate.js 中,您可以像这样访问道具。

export const DetailPage = ({ location }) => {
  console.log(location);
  return (
    <div>
      <h3>{location.price}</h3>
      <div>{location.name}</div>
    </div>
  );
};