React(Router)
学習目標
ルータの概念を定義し、aラベル、リンクコンポーネント、userNavigateをどのように実装するかを目標としています.
SPA
Login.html, Main.html
ページ数でhtmlファイルhtml
の個数は1個>SPARouting
라우팅(Routing)
は、URL(異なるパス)によって表示される異なるビュー(画面)である.React-router
は、ルーティング機能に応答するために最も一般的なライブラリである.React Router
import React from "react";
import { BrowserRouter, Routes, Route } from "react-router-dom";
import Nav from "./components/Nav/Nav";
import Footer from "./components/Footer/Footer";
import Login from "./pages/Login/Login";
import Signup from "./pages/Signup/Signup";
import Main from "./pages/Main/Main";
function Router() {
return (
<BrowserRouter>
<Nav />
<Routes>
<Route path="/" element={<Login />} />
<Route path="/signup" element={<Signup />} />
<Route path="/main" element={<Main />} />
</Routes>
<Footer />
</BrowserRouter>
);
}
export default Router;
ReactDOM.render(<Router />, document.getElementById('root'));
index.js
を変更してからルーティング機能を適用する必要があります.<Link>
構成部品の使用方法import React from "react";
import { Link } from "react-router-dom";
function Login() {
return (
<div>
<Link to="/signup">회원가입</Link>
</div>
);
}
export default Login;
<useNavigate>
実現import React from "react";
import { useNavigate } from "react-router-dom";
function Login() {
const navigate = useNavigate();
const goToMain = () => {
navigate("/main");
};
// 실제 활용 예시
// const goToMain = () => {
// if(response.message === "valid user"){
// navigate('/main');
// } else {
// alert("가입된 회원이 아닙니다. 회원가입을 먼저 해주세요.")
// navigate('/signup');
// }
// }
return (
<div>
<button className="loginBtn" onClick={goToMain}>
로그인
</button>
</div>
);
}
export default Login;
useNavigate
hookは、ページの移動を許可する関数を返します.この関数をnavigate
という変数に保存します.navigate
のパラメータを使用して、Router.js
に設定されたパスを対応するパスに渡すことができます.<a>, <Link>, <useNavigate>
用法<a>
-外部サイトへの直接移動<Link>
-プロジェクトでページを切り替えた場合:-クリック時の即時移動を実行するためのロジック
-ex)Nav Bar、Aside Menu、「プロジェクトリスト」ページでプロジェクトをクリックすると->詳細ページ
<useNavigate>
-ページ切り替え時に他の処理が必要なロジックがある場合は、-ex)Backend APIへのデータ転送
-ユーザーデータ検証/認証
- response message
-ケース1:登録済みメンバーに移動>ホームページ
-Case 2:非会員ユーザーへ移動>Signupページ
Reference
この問題について(React(Router)), 我々は、より多くの情報をここで見つけました https://velog.io/@leesegho/ReactRouterテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol