代码之家  ›  专栏  ›  技术社区  ›  user818700

将道具传递给react router v4中的路由器组件[重复]

  •  1
  • user818700  · 技术社区  · 6 年前

    例如:

    import SomeComponent...
    
    <Router>
        <Route path='/' component={SomeComponent} />
    </Router>
    

    我怎么把东西传给 SomeComponent 这样我就可以通过 this.props.xxx ?

    1 回复  |  直到 6 年前
        1
  •  2
  •   margaretkru    6 年前

    尝试以下操作:

    <Router>
        <Route path='/' component={(props) => 
            (<SomeComponent value={this.state.value} {...props} )/>} />
    </Router>
    

    注意,您需要通过 ...props 如果要访问组件中的管线特性(例如匹配、位置或历史,如 this.props.history 组件代码中)。


    更新:

    出于性能原因,最好使用 render 在这种情况下,如:

     <Router>
            <Route path='/' render={(props) => 
                (<SomeComponent value={this.state.value} {...props} )/>} />
        </Router>
    

    根据 react docs :

    使用组件(而不是渲染或子级)时 路由器使用React。createElement从 给定组件。这意味着如果您向 组件属性,则在每次渲染时创建一个新组件。 这将导致现有组件卸载和新的 安装组件,而不仅仅是更新现有组件。 使用内联函数进行内联渲染时,请使用渲染或 儿童道具(下图)。