TIL -反応ルータ2:ダイナミックURLパラメータ
URLパラメータは、値がページのURLに動的に設定されるパラメータです.これにより、ルートが同じコンポーネント(UI)をレンダリングすることができますが、そのコンポーネントを渡すと、URLの動的部分がオフになります. クリエイトア 設定する
paramsオブジェクトの値を取得する 反応ルータV 4がコンポーネントをレンダリングするときはいつでも、それはそのコンポーネントに3つの小道具、マッチ、場所と歴史を通過します.
URLはあなたのアドレスバーの実際の相対パスです パスは、その名前が示すように、マッチしたルートのパス:: isexactは、これが正確なマッチであるかどうかを示すブール値です.実際のパスがパス属性として多くのセグメントを持っているので、ここでは本当ですもし我々の現在のURLが/desdesbox/ダイアナ/surnameであったならば、ルートは活性化されたでしょう、しかし、isexactはfalseであるでしょう. paramsはオブジェクトです.あなたがそれを展開するならば、あなたはそれを見ます、我々はマッチの特性としてURLパラメタ(ID)をつかむことができます.PARAM
useParams URLパラメーターのキー/値ペアのオブジェクトを返します.マッチにアクセスするために使用します.現在のパラメータ
ポストリストで.JSは偽のブログ記事のリストを追加します.
最後に、FilteredPostにマップを適用して、一致する記事のタイトルを表示します.
<Route>
<Route path="/user-profile/:tool/:name" component={UserProfile} />
ツールとパスの名前部分は変数パラメータと見なされます.<Link>
to <li>
<Link to="/user-profile/Github/Leonor">Leonor Git</Link>
</li>
<li>
<Link to="/user-profile/Github/Diana">Diana Git</Link>
</li>
<li>
<Link to="/user-profile/Codesandbox/Leonor">Leonor Sandbox</Link>
</li>
<li>
<Link to="/user-profile/Codesandbox/Diana">Diana Sandbox</Link>
</li>
反応ルータは、パスの形を比較し、正しいものを選択します.const params = props.match.params;
<h2>
{params.name}s {params.tool} Profile
</h2>
Useparamsフック
useParams URLパラメーターのキー/値ペアのオブジェクトを返します.マッチにアクセスするために使用します.現在のパラメータ
<Route>
.const About = () => {
const { name } = useParams()
return (
// props.match.params.name
<>
<h1>About {name}</h1>
</>
)
};
URLパラメータの使用
ポストリストで.JSは偽のブログ記事のリストを追加します.
const allPosts = [
{ year: '2019', month: '09', title: 'React Router v5.1 released' },
{ year: '2019', month: '09', title: 'React 16.10.0 released' },
{ year: '2019', month: '10', title: 'React Conf 2019' },
{ year: '2019', month: '10', title: 'Transition of Node.js 12 to LTS' }
];
次に、コンポーネントの内容をまとめます.function PostList(props) {
// Get the URL parameters
const params = props.match.params;
// Filter allPosts array: keep posts who have the
// same month AND same year as the URL parameters
const filteredPosts = allPosts.filter(
post => post.year === params.year && post.month === params.month
);
return (
<div>
<h2>Posts for {params.month}/{params.year}</h2>
{
filteredPosts.map(post => (
<h3>{post.title}</h3>
))
}
</div>
);
}
我々がすべてのポストに適用するフィルタは、最もおもしろい部分です.フィルタはすべての投稿を繰り返しますその「基準」すなわち、それがPAREMeterとして与えられる機能は、各々のポストがこの状態に従うかどうかチェックします:ポストの年と月は、URLの年と月に匹敵しますか?もしそうならば、ポストオブジェクトは保持されて、filteredpostに存在します.最後に、FilteredPostにマップを適用して、一致する記事のタイトルを表示します.
Reference
この問題について(TIL -反応ルータ2:ダイナミックURLパラメータ), 我々は、より多くの情報をここで見つけました https://dev.to/annequinkenstein/til-react-router-2-dynamic-url-parameters-ccfテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol