当前位置: 首页 > 知识库问答 >
问题:

如何通过道具与react-router使用onhtml方法

许胡非
2023-03-14

我是新的反应,甚至是新的反应路由器,我创建了一个反应应用程序,其中包含一些路由,但有些路由需要相同的数据(道具)。当按下当前页面上的按钮时,我想通过onClick事件传输这些道具。我读到一些尝试,比如将按钮上的onclicklistener绑定到类似的方法

handleOnClick(){    
  this.props.history.push('/booking')
 ))

重定向到称为“预订”的路线。但是我怎么能把我现在页面的一个道具或者整套道具传递到这个新页面呢?是否有任何解决方案,我如何访问重定向路线上的道具?

这是我的ndex.js,更多的路线将很快添加:

const routing = (
 <Router>
   <div>
    <Route exact path="/" component={App} />
     <Route path="/booked" component={Booked} />
   </div>
 </Router>
 );

ReactDOM.render(routing, document.getElementById("root"));

在任何BookingItems中,我都有一个按钮,可以重定向到Booked.js。

预订项目:

onButtonClick() {
  this.props.history.push("/booked");
 }

render(){
 return(
          <div className="alignCenterDiv">
            <button
              onClick={this.onButtonClick.bind(this)}
              align="center"
              className="buttonBooking"
            >
              Buchen
            </button>
          </div>
)}

预订:在这里,我想访问我在BookingItems中拥有的任何道具,或者我在BookingItem中创建的道具,以将其传递给Booked。

共有2个答案

汤枫涟
2023-03-14

你可以这样做:

你的路线

<Route path="/booking/:id" .../>

点击

handleOnClick(){    
  this.props.history.push('/booking/12345')
 ))

预订组件

componentDidMount(){
  console.log(this.props.match.params.id);
}

另一个选择(问题更新后,听起来更好)是使用redux(或类似的东西)。当您单击按钮时,您会发送一个操作,将selectedBookingItem设置为全局状态。然后导航(看看反应-路由器-redux)。Booking组件连接到redux并且selectedBookingItem被映射到prop(mapStateToProps)。

柳德义
2023-03-14

如果使用重定向:

this.props.history.push('/booking', {
  myProp: this.props.myProp,
  foo: 'bar'
})

然后,在/booking页面中,您可以访问如下变量:

console.log(this.props.location.state)
/*
  {
    myProp: '...',
    foo: 'bar'
  }
*/
 类似资料:
  • 在Tabs组件中,具有以下属性 儿童[0](this.props.children)将看起来像 孩子[0]。道具看起来像 我希望属性如下所示。上面只是打印出语句函数。 这是一个奇怪的问题,但说来话长,我正在使用一个库,这就是它的结论。

  • 我在React中有一个表,它的行没有html元素,所以我可以用通常的方式进行映射。它的数据通过道具。下面是一个例子: 我想做一些像

  • 问题内容: 我正在用react-router进行反应。我正在尝试在react-router的“链接”中传递属性 “链接”呈现页面,但不将属性传递给新视图。下面是查看代码 如何使用“链接”传递数据? 问题答案: 此行缺失: 应该: 鉴于以下情况 (过时的v1) : 自v4起最新 : 并在组件中: 从您在文档上发布的链接,朝页面底部: 给定一条路线 使用一些存根查询示例更新了代码示例: 参见:http

  • 问题内容: 我需要使用路由器将道具传递到组件。这是我的代码: 如您所见,isAuthenticated我想传递给Login组件的道具。 当我登录道具时, isAuthenticated 道具不存在。我做错了什么?如何正确通过道具?我关注了文档以及其他讨论。据我了解,它应该可以工作。的版本 做出反应路由器 和 反应路由器- DOM 是 4.0.0 问题答案: 像这样传递它: 它应该在“登录组件”中可

  • 问题内容: 问:如何通过React-Router的Link组件传递prop或单个值(如_id),并在端点捕获它? 这就是我的意思:假设我们在/ a页上。链接会将用户带到/ b。就这样。现在,我需要通过链接将_id从/ a传递到/ b。 我要传递的id是其中嵌套了Link组件的对象的属性。 我在另一个StackOverflow线程中发现了这种语法。我的代码编译时没有中断,所以这可能意味着它起作用了吗

  • 问题内容: 使用 withRouter() 时如何获取路由上下文,位置,参数等? 您可以使用withRouter获得该信息,还是必须将这些内容显式传递到组件树中? 问题答案: 因此,不再使用。在道具中都可以使用: 因此,假设您想将用户转到新路线,您只需