通过按钮将路由参数传递到另一个页面

Posted

技术标签:

【中文标题】通过按钮将路由参数传递到另一个页面【英文标题】:Passing route parameter through button to another page 【发布时间】:2019-03-06 02:21:21 【问题描述】:

我正在使用 materialui 库和 react-router。在我的***组件中,我指定了我的路线:

class App extends Component 
  render() 
    const classes = this.props;
    return (
      <React.Fragment> 
        <BrowserRouter>
          <Route render=(location) => (
          <TransitionGroup>
          <CSSTransition
              key=location.key
              timeout=100
              classNames="someanimation"
            >
          <Switch location=location>
               <Route exact path="/" component=HomePage />
               <Route exact path="/customer/:id" component=CustomerPage />
               <Route component=ErrorPage />
             </Switch>
           </CSSTransition>
         </TransitionGroup>
       ) />
        </BrowserRouter>
     </React.Fragment>
    );
  

在我的主页上,我有一些按钮对应一些客户。当我单击该按钮时,它现在应该使用该客户 ID 转到客户页面。我的主页按钮如下所示:

<Button component=Link to="/customer/:id">
                      Go To Customer id : this.props.customer[100]
                    </Button>

从这里我不确定如何将客户 ID 从此按钮传递到客户页面?

我的客户页面很简单,如下所示:

const Customer= () => 
    return(
        <div >
            <h3>Customer ID : somehow get the id that was passed in here</h3>
        </div>
    )

【问题讨论】:

React 路由器有一个匹配道具,可以从 URL 传递参数。所以如果你有一个叫id的道具,它应该是this.props.match.params.id 在按钮上如何指定要传递的 id? 你的'to='/customer/$this.props.customer[100]''。您必须将值传递给链接。只需用字符串文字替换引号 【参考方案1】:

按钮上的 to 属性需要指定确切的路由 URL,而不是路径。所以像:

<Button component=Link to="/customer/100">

然后正如 cmets 中提到的 Strahinja Ajvaz,您可以在您的 Customer 组件中使用 this.props.match.params.id 来检索该 ID

【讨论】:

它似乎不起作用。我的按钮现在看起来像这样: 所以我将其更改为 match.params.id,如果我直接输入 url(例如 customer/100)它会显示,从我的按钮设置它仍然不适用于动态 ID。是的,如果我把 to="/customer/100" 但我需要它来允许一个表达式,因为 id 不是硬编码的字节动态 弄明白了:to='/customer/' + customer[100]

以上是关于通过按钮将路由参数传递到另一个页面的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Dart 中的 onTap 函数将值传递到另一个屏幕?

试图将三个参数从一个 php 文件传递​​到另一个

angular跳转页面和传递参数

如何使PHP程序执行页面跳转时传递大量参数

将参数传递到另一个网页

在路由器vue中传递参数