当前位置: 首页 > 面试题库 >

将道具传递给用Router()函数包装的react组件

宇文鸣
2023-03-14
问题内容

我正在使用React-Router v4在我的React应用程序中导航。以下是包装在withRouter()函数中的组件,使它能够在单击时更改路线:

const LogoName = withRouter(({history, props}) => (
  <h1
    {...props}
    onClick={() => {history.push('/')}}>
    BandMate
  </h1>
));

如您所见,我将传递props给组件,以便更改组件的类。这里的问题propsundefined<LogoName>组件中。单击另一个组件时,我需要能够更改此组件的类,如下所示:

<LogoName className={this.state.searchOpen ? "hidden" : ""} />
<div id="search-container">
  <SearchIcon
    onClick={this.handleClick}
    className={this.state.searchOpen ? "active" : ""} />
  <SearchBar className={this.state.searchOpen ? "active" : ""}/>
</div>

这是我处理点击的方法。基本上只是设置状态。

constructor(){
  super();
  this.state = {
    searchOpen: false
  }
}

handleClick = () => {
  this.setState( {searchOpen: !this.state.searchOpen} );
}

有没有办法让我传递props给包装在withRouter()函数内部的组件,或者有类似的方法来创建一个可以使用React-
Router导航并仍然接收道具的组件?

提前致谢。


问题答案:

问题是在进行销毁时,您想要destructure props但未传递任何命名propsLogoNamecomponent的prop

您可以将参数更改为

const LogoName = withRouter((props) => (
  <h1
    {...props}
    onClick={() => {props.history.push('/')}}>
    BandMate
  </h1>
));

但是,您仍然可以通过使用传播运算符语法(例如,

const LogoName = withRouter(({history, ...props}) => (
  <h1
    {...props}
    onClick={() => {history.push('/')}}>
    BandMate
  </h1>
));


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

  • 问题内容: 我使用React Router的React.js应用程序具有以下结构: 我想将一些属性传递给组件。 (通常我会这样做) 用React Router做到这一点最简单,正确的方法是什么? 问题答案: 更新 自新版本发布以来,无需使用包装器就可以直接通过组件传递道具。例如,通过使用prop。 零件: 用法: 旧版本 我的首选方式是包装组件并将包装器作为路由处理程序传递。 这是您应用了更改的示

  • 问题内容: 我正在尝试访问DetailsPage组件中的 ID ,但无法访问它。我试过了 将参数传递给DetailsPage,但徒劳。 所以有什么想法如何将ID传递给DetailsPage吗? 问题答案: 如果要将props传递到路线内的组件,最简单的方法是利用,如下所示: 您可以使用以下内容访问道具: 将需要通过原路线的道具,否则你将只能得到内。

  • 问题内容: 我正在尝试将现有的react-router 3.0.0应用程序迁移到4.0.0。在路由器内,我需要传递与其子代无关的其他非路由选择。 在早期版本的react- router中,有一些技巧性的方法可以实现此目的,本文对此进行了详细介绍。我个人最喜欢的是使用的这种方法,因为它可以确保复制所有的react-router道具: 到目前为止,我的新App组件如下所示: 在保留提供的路由器道具的同

  • 我正在使用React Router创建一个多页面应用程序。我的主要组件是

  • 问题内容: 我无法克服React Router的问题。场景是我需要让子级路由从状态父级组件和路由传递一组道具。 我想做的就是通过它,然后通过它。但是,我能弄清楚如何做到这一点的唯一方法是同时通过两者,这意味着每条子路线都会获得每条子道具,而不论其是否相关。目前,这并不是一个阻塞问题,但是我可以看到有一段时间我将使用两个相同的组件,这意味着propA上的键将被propB的键覆盖。 这实际上以我期望的

  • 我使用的是dev-express中的react-grid库,库中有一个表组件,我们可以向它传递单元格组件,在CustomCell中,我使用的是Material UI中的菜单 在上述情况下,菜单工作良好, 但是我想要传递道具到这个组件,我尝试了以下操作 在这种情况下菜单不工作,我想知道是否有一个替代的方法来实现第二种情况。

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