Reactjs - `component` vs `render` в Route
У меня есть два сомнения относительно использования Route
от react-router-dom
(v4.3.1):
Когда мы используем
component
противrender
вRoute
:<Route exact path='/u/:username/' component={ProfileComponent} /> <Route exact path='/u/:username/' render={() => <ProfileComponent />} />
- Как получить доступ к переменной
username
в URL в обоих направлениях?
1 ответ
Решение
Когда вы передаете компонент в component
prop, компонент получит параметры пути в props.match.params
объект, т.е. props.match.params.username
в вашем примере:
class ProfileComponent extends React.Component {
render() {
return <div>{this.props.match.params.username}</div>;
}
}
При использовании render
prop, параметры пути могут быть доступны через реквизиты, данные render
функция:
<Route
exact
path='/u/:username/'
render={(props) =>
<ProfileComponent username={props.match.params.username}/>
}
/>
Вы обычно используете render
поддержать, когда вам нужны данные из компонента, который содержит ваши маршруты, так как component
prop не дает реального способа передачи дополнительных реквизитов компоненту.