javascript - Reactjs - 路由中的 `component` 与 `render`

标签 javascript reactjs routes react-router-dom

我对 react-router-dom(v4.3.1) 中 Route 的使用有两个疑问:

  1. 我们什么时候在Route中使用component vs render:

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

最佳答案

当你传递一个组件给component prop时,组件会获取props.match.params对象中的路径参数,即props.match .params.username 在你的例子中:

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

当使用 render 属性时,可以通过给 render 函数的属性访问路径参数:

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

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

关于javascript - Reactjs - 路由中的 `component` 与 `render`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51226685/

相关文章:

javascript - 按下按钮后将信息 append 到 Div

javascript - Mean.js 不工作。无法连接到 MongoDB

javascript - 如何确保 div 中的内容不会被附加到 div 底部的粘性元素 chop ?

ruby-on-rails - Rails 中的嵌套路由是什么?

python - 传入 Flask 的可能路径列表?

javascript - 清除特定输入字段的范围文本

javascript - 如何确保 React 钩子(Hook)中的状态不陈旧

css - 我在 React 组件中使用 sass 文件,但编译器给出了一些错误

go - 如何绕过 "wildcard route id conflicts with existing children in path"错误?

javascript - 在类里面实现单一职责原则(SRP)