Reactjs - 路线中的“组件”与“渲染”

Posted

技术标签:

【中文标题】Reactjs - 路线中的“组件”与“渲染”【英文标题】:Reactjs - `component` vs `render` in Route 【发布时间】:2018-12-16 00:35:01 【问题描述】:

我对@9​​87654322@(v4.3.1)中Route的用法有两个疑问:

    我们什么时候在Route 中使用componentrender

    <Route exact path='/u/:username/' component=ProfileComponent />
    <Route exact path='/u/:username/' render=() => <ProfileComponent /> />
    
    如何通过两种方式访问​​URL中的变量username

【问题讨论】:

【参考方案1】:

当您将组件传递给component 属性时,该组件将获取props.match.params 对象中的路径参数,即您的示例中的props.match.params.username

class ProfileComponent extends React.Component 
  render() 
    return <div>this.props.match.params.username</div>;
  

使用render props时,可以通过render函数赋予的props访问路径参数:

<Route
  exact
  path='/u/:username/'
  render=(props) => 
    <ProfileComponent username=props.match.params.username/>
  
/>

当您需要来自包含您的路由的组件的一些数据时,您通常使用 render 道具,因为 component 道具没有提供将额外道具传递给组件的真正方法。

【讨论】:

最后一句话是所有其他解释都忽略的关键部分。谢谢!

以上是关于Reactjs - 路线中的“组件”与“渲染”的主要内容,如果未能解决你的问题,请参考以下文章

ReactJS:即使在重新渲染组件后复​​选框状态仍然存在

如何渲染存储在 redux reducer 中的 reactjs 组件?

我无法从状态渲染和对象,ReactJS 与功能组件

如何将服务器端渲染中的数据从节点传递给reactjs组件

ReactJS / Javascript - 无法渲染对象中项目的组件

如何在 ReactJS 中将数据从 API 渲染到表(函数组件)