ルーティング用にフックが追加された理由を理解したところで、フックの動作を見てみましょう。
useParamsuseParamsフックは、動的URLで渡されるパラメータのキーと値のペアを含むオブジェクトを返します。
たとえば、URLのパラメータとしてUserを受け入れるページコンポーネントがあるidとします。
<Route path="/user/:id">
<User />
</Route>
import { useParams } from "react-router-dom";
const User = () => {
const params = useParams();
console.log(params);
return (
// ...
)
}
{
id: 3,
}
import {
// ...
useParams,
} from "react-router-dom";
// /user/:id
const User = () => {
const params = useParams();
return (
<div>
<div>This is the user page</div>
<div>current user Id - {params.id}</div>
</div>
);
};
useHistoryフックは返すhistoryルータがルート変更を処理するために内部的に使用するオブジェクトを、。このhistoryオブジェクトは、セッション履歴の管理に使用されます。
たとえば、このhistory.push()メソッドを使用して、履歴スタックに新しいエントリを追加し、現在のルートからユーザーをナビゲートできます。
import {
// ...
useHistory,
} from "react-router-dom";
const User = () => {
const history = useHistory();
const params = useParams();
const handleBack = () => {
history.goBack();
};
const handleNavigation = () => {
history.push("/user/5");
};
return (
<div>
<div>This is the user page</div>
<div>current user Id - {params.id}</div>
<div>
<button onClick={handleBack}>Go Back</button>
</div>
<div>
<button onClick={handleNavigation}>Go To Different User</button>
</div>
</div>
);
};
useLocationuseLocationフックは、あなたがアクセスすることを可能にするlocationアクティブなURLを表すオブジェクトを。locationオブジェクトの値は、ユーザーが新しいURLに移動するたびに変更されます。あなたはURLが変更するたびにすべてのイベントをトリガする必要があるとき、フックが便利です。useLocation
ユーザーのプロファイルページのビューを追跡する必要があることを考慮してください。Reactに付属locationのuseEffectフックを使用してオブジェクトの変更を検出できます。
import {
// ...
useLocation,
} from "react-router-dom";
const User = () => {
const history = useHistory();
const params = useParams();
const location = useLocation();
useEffect(() => {
console.log(location.pathname);
// Send request to your server to increment page view count
}, [location]);
const handleBack = () => {
history.goBack();
};
const handleNavigation = () => {
history.push("/user/5");
};
return (
<div>
<div>This is the user page</div>
<div>current user Id - {params.id}</div>
<div>
<button onClick={handleBack}>Go Back</button>
</div>
<div>
<button onClick={handleNavigation}>Go To Different User</button>
</div>
</div>
);
};
useRouteMatchフックは、同様に方法に、指定されたパスを有する活性URLに一致するRoute成分作品。それは非常に興味深いフックです。不要なRouteコンポーネントを取り除き、matchオブジェクトにアクセスできます。
これで、ユーザーページのルートコンポーネントのパスを次のように変更できます/user。
<Route path="/user/">
<User />
</Route>
import {
// ...
useRouteMatch,
} from "react-router-dom";
const User = () => {
const history = useHistory();
const routeMatch = useRouteMatch("/user/:id");
const location = useLocation();
useEffect(() => {
console.log(location);
}, [location]);
const handleBack = () => {
history.goBack();
};
const handleNavigation = () => {
history.push("/user/5");
};
return (
<div>
<div>This is the user page</div>
{routeMatch ? (
<div>user Id - {routeMatch.params.id}</div>
) : (
<div>You are viewing your profile</div>
)}
<div>
<button onClick={handleBack}>Go Back</button>
</div>
<div>
<button onClick={handleNavigation}>Go To Different User</button>
</div>
</div>
);
};
フックはReactエコシステムへの素晴らしい追加です。フックを使用したルーティングの処理に関するコードをいくつか見てきたので、フックが提供するものを最大限に活用する準備が整いました。
次回まで、安全を確保し、React Hooksでコーディングを続けてください!
今週、毎日のメールリストのメンバーからメールを受け取りました。彼らは次のことを知りたかったのです。毎日、毎週、毎月どのリソースにアクセスしていますか? 素晴らしい質問です!私のワークフローと使用している主なリソースについての洞察を共有したいと思います。
頻繁に起こることだが、突然、私は衝撃を受ける 再びミッドウェイだ <いいえ、太平洋にあるものではなく、カーニバルにあるものです> どの見出しも大音量で…..
今日の急速に進化するビジネス環境において、ハイブリッドおよびリモートワークの概念は前例のない勢いを増しています。企業が従業員のニーズや期待の変化に適応し続ける中、さまざまな分野の専門家が集まり、この変革的な働き方のメリット、課題、将来について議論しています。
先週、私はPressGazette(英国のメディアニュースウェブサイト)経由で送信されたプレスリリースに気づきました。この記事は、スカンジナビアのポッドキャスト ホスティングおよび広告会社である Acast が、ポッドキャスティングにおいて「おそらく最も影響力のある」パブリッシャーのコンソーシアムを率いることになると発表しました。
私たちがこの地球上で繁栄し続けたいのであれば、危険な会話をしなければなりません。私たちがこれまでやってきたこと、現在行っていること、そして現在継続して行う予定の(または計画している)ことに挑戦するものです。