Reactjs - Route 中的`component` 与`render`

IT技术 javascript reactjs routes react-router-dom
2021-05-17 02:02:00

我对Routefrom react-router-dom( v4.3.1 ) 的用法有两个疑问

  1. 我们什么时候使用componentvs renderin Route

    <Route exact path='/u/:username/' component={ProfileComponent} />
    <Route exact path='/u/:username/' render={() => <ProfileComponent />} />
    
  2. 如何访问变量usernameURL中左右逢源?
1个回答

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

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

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

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

render当您需要来自包含路由的组件的一些数据时,您通常会使用prop,因为componentprop 没有真正的方式将额外的 props 传递给组件。