首页 文章

反应:将道具从祖父母传给孙子

提问于
浏览
0

我有一个问题,在反应中传递道具 . 这是我的文件夹结构:

SRC

  • 组件

  • Button.js

  • 容器

  • PageContainer.js

  • Page.js

我正在使用Bootstrap 4在Button.js中创建一个Button:

<div>
    <a className="btn btn-primary sharp" href={this.props.url} role="button">{this.props.btnName}</a>
  </div>

Button类中没有别的东西 . 所以现在我把一个Button放到类PageContainer中:

<div>
    <Header/>
    <Button url={this.props.urlBack} btnName="Back"/>
    <Button url={this.props.urlNext} btnName="Next"/>
  </div>

正如您所看到的,我将 Headers 传递给按钮:Back和Next . 这很好 . 我现在可以添加一个网址,它可以正常工作,但这不是我想要的 .

我将PageContainer添加到类Page,以便我可以在此级别添加url:

<div>
    <PageContainer urlBack="/" urlNext="/nextPage"/>
  </div>

由于某种原因,这是行不通的 . 有人可以解释我如何将道具从祖父母传递给孙子吗?在文档中,它说这是如何做到这一点的方式 . 我也没有错误,因为道具没有从Page传递给PageContainer . console.log(this.props.urlBack)导致未定义 .

PS:也许你问我为什么使用Page.js或者我有什么原因使用PageContainer . 第一:有更多的组件,我只是把它们排除在外 . 第二:我想重复使用PageContainer几个页面,这样我只需要更改网址 .

1 回答

  • 0

    看起来你没有将道具传递给你的 <VideoContainer /> 组件 . 您只是将其指定为路由组件 <Route />

    您的答案可以在这里找到:React react-router-dom pass props to component

    <Route path="/algorithmus/bubblesort/video" 
        render={(props) => <VideoContainer {...props} />}
    />
    

    但是,我认为这不会得到你的 this.props.urlthis.props.btnName . this.props.path ,是的..但你可能不得不重新审视一些逻辑 .

    UPDATE:

    在阅读您的评论并检查您的回购后,它对您的设置没有任何问题 . 我在以下模拟了您的BubblesortVideo - > VideoContainer层次结构:https://stackblitz.com/edit/react-eaqmua

相关问题