react-router-dom
(v4.3.1)のRoute
の使用に関して2つの疑問があります。
component
でrender
とRoute
を使用する場合:
<Route exact path='/u/:username/' component={ProfileComponent} />
<Route exact path='/u/:username/' render={() => <ProfileComponent />} />
username
に両方の方法でアクセスする方法は?コンポーネントをcomponent
プロパティに渡すと、コンポーネントは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
プロップを使用します。