Intro
์ค๋์ ํ๋ก์ ํธ์ ๋ค์ด๊ฐ๊ธฐ ์ํ ๊ธฐ์ด ๊ณต์ฌ์ ๋ํด ํ์ตํ๋ค.
์ฒ์ ํ๋ก์ ํธ๋ฅผ ์์ํ ๋ ๋ญ๋ถํฐ ๊ฑด๋๋ ค์ผ ํ ์ง ๋ง๋งํ๋๋ฐ ๊ทธ๋ฐ ๊ณ ๋ฏผ์ ํด์ํด์ฃผ๋ ์ ์ตํ ๊ฐ์์๋ค.
์ค๋ ํ์ตํ ๋ด์ฉ
: ํ์ด์ง ๋ผ์ฐํ , ํ๋ก์ ํธ ๊ธฐ์ด ๊ณต์ฌ
๋ฆฌ์กํธ ํ์ด์ง ๋ผ์ฐํ 2
React-router-dom์ Hooks
- Path Variable - useParams
- Query String - useSearchParams
- Page Moving - useNavigate
useParams
์ฝ๋ก (:) ๋ค์ ์ค๋ ๋์ URL์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๋ ํจ์
<Route path="/diary/:id" element={<Diary />} />
// diary/10
import { useParams } from 'react-router';
...
const { id } = useParams();
console.log(id); // 10
useSearchParams
์น ํ์ด์ง์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ
?๋ก ์์
// ?id=10&mode=dark
import { useSearchParams } from 'react-router-dom';
...
const [searchParams, setSerachParams] = useSearchParams();
const id = searchParams.get('id'); // 10
- ? ๋ค์ ์ค๋ ๊ฐ๋ค์ get ํจ์๋ก ๊ฐ์ ธ์จ๋ค.
- setSearchParams: searchParams ๊ฐ์ ๋ฐ๊พธ๋ ์ญํ
- ex) setSearchParams({ id: '12345' })
useNaviagte
๋ก๊ทธ์ธ๋์ง ์์ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ด ํ์ํ ํ์ด์ง๋ฅผ ์ด์ฉํ๋ ค๊ณ ํ ๊ฒฝ์ฐ, ๊ฐ์ ๋ก ๋ก๊ทธ์ธ ํ์ด์ง๋ก ์ด๋์ํฌ ๋ ์ฃผ๋ก ์ฌ์ฉ
import { useNavigate } from 'react-router-dom';
const Edit = () => {
const navigate = useNavigate();
return (
<div>
<h1>Edit</h1>
<p>์ด๊ณณ์ ์ผ๊ธฐ ์์ ํ์ด์ง์
๋๋ค.</p>
<button
onClick={() => {
navigate('/home');
}}
>
HOME์ผ๋ก ๊ฐ๊ธฐ
</button>
<button
onClick={() => {
navigate(-1);
}}
>
๋ค๋ก๊ฐ๊ธฐ
</button>
</div>
);
};
export default Edit;
ํ๋ก์ ํธ ๊ธฐ์ด ๊ณต์ฌ
- ํฐํธ ์ธํ
- ๋ ์ด์์ ์ธํ
- ์ด๋ฏธ์ง ์์ ์ธํ
- ๊ณตํต ์ปดํฌ๋ํธ ์ธํ
ํฐํธ ์ธํ
: Google Web Fonts๋ฅผ ์ด์ฉํ ํ๋ก์ ํธ์ ์ฌ์ฉ๋๋ ํฐํธ ์ธํ ํ๊ธฐ
Browse Fonts - Google Fonts
Making the web more beautiful, fast, and open through great typography
fonts.google.com
โ ๏ธ ํฐํธ๋ฅผ ๊ฐ์ ธ์ ์ฌ์ฉํ ๋, ์คํ ํฐํธ ๋ผ์ด์ผ์ค์ธ์ง ํ์ธํ๊ธฐ!
๋ ์ด์์ ์ธํ
: ๋ชจ๋ ํ์ด์ง์ ๋ฐ์๋๋ ๋ ์ด์์ ์ธํ ํ๊ธฐ
ํ๋ฉด์ ๋ฐฐ๊ฒฝ, ๊ธ์ ํฐํธ ๋ฑ ๋ชจ๋ ํ์ด์ง์ ์ ์ฉ๋๋ ์คํ์ผ์ body๋ #root ํ๊ทธ์ ์ ์ฉํ๋ค.
์ด๋ฏธ์ง ์์ ์ธํ
: ์ด๋ฏธ์ง๋ค์ ํ๋ก์ ํธ์์ ๋ถ๋ฌ์ ์ฌ์ฉํ ์ ์๋ ํ๊ฒฝ ์ธํ ํ๊ธฐ
<img src={process.env.PUBLIC_URL + '/assets/emotion1.png'} />
- process.env.PUBLIC_URL: ํ์ฌ ํ๋ก์ ํธ์์ public ํด๋์ ๊ฒฝ๋ก
๊ณตํต ์ปดํฌ๋ํธ ์ธํ
: ๋ชจ๋ ํ์ด์ง์ ๊ณตํต์ผ๋ก ์ฌ์ฉ๋๋ ๋ฒํผ, ํค๋ ์ปดํฌ๋ํธ ์ธํ ํ๊ธฐ
- ๋ฒํผ ๋ฑ ํ๋ก์ ํธ์์ ๊ณตํต์ผ๋ก ์ฐ์ด๋ ์ปดํฌ๋ํธ๋ฅผ ํจํดํํ๋ ๊ณผ์ ์ด๋ค.
- ๊ณตํต ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๊ณ props๋ก ์กฐ๊ฑด์ ๋ง๊ฒ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ ธ์ ์ฌ์ฉํ๋๋ก ๊ตฌํ
๋ง๋ฌด๋ฆฌ
๊ฐ์ด๊ฐ ์งง์์ ๊ธ๋ฐฉ ๋๋ฌ๋๋ฐ ๊ฐ์๋ฅผ ๋ฃ๋ ๊ฑฐ์์ ๋๋๋ ๊ฒ ์๋๋ผ ๊ฐ์์์ ๋ฐฐ์ด ๊ฑธ ์ค๋ฌด์์ ์ง์ ์ฌ์ฉํ ์ ์๋๋ก ๋ด ๊ฒ์ผ๋ก ๋ง๋ค์ด์ผ ํ๋ค. ๋ณต์ต์ ์ด์ฌํ ํ์!