๐ useLocation
๋ฆฌ์กํธ ํ ์ค์์ useLocation์ ํ์ฌ์ URL์ ๋ํํ๋ location ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค.
์ด์ ๋ธ๋ก๊ทธ์์ ํ์ธํ๋ ๊ฒ๊ณผ ๊ฐ์ด URL์ด ๋ฐ๋ ๋๋ง๋ค ์๋ก์ด location์ ๋ฐํํ๋ useState์ฒ๋ผ ์๊ฐํ ์ ์๋ค.
์๋ก์ด ํ์ด์ง๊ฐ ๋ก๋๋ ๋๋ง๋ค web analytics tool(์น ๋ถ์ ๋๊ตฌ)๋ฅผ ์ฌ์ฉํ๋ ์๋ก์ด "ํ์ด์ง ๋ชจ์ต"์ ์ด๋ฒคํธ๋ฅผ ์๋์ํค๋ ค๋ ์ํฉ์์ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
์ด๋ location ๊ฐ์ฒด๋ ์๋์ ๊ฐ๋ค.
[Chat GPT]
- pathname: URL์์ ๋๋ฉ์ธ ๋ค์ ๊ฒฝ๋ก๋ฅผ ๋ํ๋ ๋๋ค. ์๋ฅผ ๋ค์ด, URL์ด http://example.com/about์ธ ๊ฒฝ์ฐ, pathname์ /about์ด ๋ฉ๋๋ค.
- search: URL์ ์ฟผ๋ฆฌ ์คํธ๋ง์ ๋ํ๋ ๋๋ค. ์๋ฅผ ๋ค์ด, http://example.com/about?name=John&age=30์ ๊ฒฝ์ฐ, search๋ ?name=John&age=30์ด ๋ฉ๋๋ค.
- hash: URL์ ํด์(fragment) ๋ถ๋ถ์ ๋ํ๋ ๋๋ค. ์๋ฅผ ๋ค์ด, http://example.com/about#team์ ๊ฒฝ์ฐ, hash๋ #team์ด ๋ฉ๋๋ค.
- state: ํ์ด์ง๋ก์ ์ด๋ ์์ Link๋ navigate ํจ์๋ฅผ ํตํด ์ ๋ฌ๋ ์ํ(state)๋ฅผ ๋ํ๋ ๋๋ค. ์ด๋ ํ์ด์ง ์ด๋ ์ ์ถ๊ฐ์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ณ ์ ํ ๋ ์ ์ฉํฉ๋๋ค. state๋ ์ด๋ค JavaScript ๊ฐ์ฒด๋ ๋ ์ ์์ผ๋ฉฐ, ์ด๋ํ ํ์ด์ง์์๋ง ์ ๊ทผ ๊ฐ๋ฅํฉ๋๋ค.
์ฆ, ํ์ฌ ๋ธ๋ผ์ฐ์ ์ URL์ ๋ํ ์ ๋ณด๋ฅผ ํฌํจํ๋ค๋ ๊ฒ์ด๋ค.
์ด ๊ฐ์ฒด๋ ๊ฒฝ๋ก(pathname), ๊ฒ์ ์ฟผ๋ฆฌ(search), ์ํ(state), ํด์(hash)๋ฑ์ ์์ฑ์ ํฌํจํ๋ค.
useLocateํ ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ React Router์์ ์ด๋ฅผ ์ํฌํธ ํด์ผํ๋ค.
import { useLocation } from 'react-router-dom';
location๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ํ์ฌ ๋ธ๋ผ์ฐ์ ์ ๊ฒฝ๋ก๋ฅผ ์ป์ด์ค๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์ ์๋ค.
const location = useLocation();
const path = location.pathname;
์ดํ ํด๋น path์ ๋ณํ๊ฐ ์๊ธธ ๋ ์ด๋ ํ ๋์์ ํ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ์์ฑํ๋ฉด ๋๋ค.
if (path === '/') {
// ~
} else if (path === '/champAnalyze') {
// ~
} else {
// ~
}
๐ useNavigate
useNavigate๋ React Router์์ ๋ผ์ฐํ ์ ์ํํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
์ด ํ ์ ์ด์ฉํ๋ฉด ์ปดํฌ๋ํธ ๋ด์์ ์ฌ์ฉ์๋ฅผ ๋ค๋ฅธ ๊ฒฝ๋ก๋ก ๋ฆฌ๋๋ ์ ํ๊ฑฐ๋, ์ด์ ํ์ด์ง๋ก ๋์๊ฐ๊ฒ ํ๋ ๋ฑ์ ๋ผ์ฐํ ๊ด๋ จ ์์ ์ ์ํ ํ ์ ์๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก useNavgiate๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ React Router์์ ์ด๋ฅผ ์ํฌํธํด์ผํ๋ค.
import { useNavigate } from 'react-router-dom';
๊ทธ๋ฆฌ๊ณ ์ปดํฌ๋ํธ์์ useNavigate๋ฅผ ํธ์ถํ์ฌ navigateํจ์๋ฅผ ์ป๋๋ค.
์ดํ =ํน์ ๊ฒฝ๋ก๋ก ์ด๋ํ๊ธฐ ์ํด navigateํจ์์ ๊ฒฝ๋ก๋ฅผ ๋ฌธ์์ด๋ก ์ ๋ฌํ๋ฉด ๋๋ค.
const navigate = useNaviate();
navigate('/๋ฉ์ธ');
์ด๋ฅผ ์ด์ฉํ์ฌ ๋ฉ๋ด๋ฅผ ํด๋ฆญํ์ ๋ ํ์ด์ง๋ฅผ ์ด๋ํ๋๋ก ๊ฐ๋ฐ์ ์งํํด๋ณด๊ฒ ๋ค.
์๋์ ๋งํฌ์์ ์ด์ด์ ์งํ๋๋ค.
https://2t-hong.tistory.com/177
'React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] mapํจ์ ์ฌ์ฉ๋ฒ (0) | 2024.02.27 |
---|---|
[React] ๋ฆฌ์กํธ ํ ์ค(1) - useState (0) | 2024.02.23 |
[React] PNGํ์ผ์ SVGํ์ผ๋ก ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ (1) | 2024.02.21 |
[React] ํ๋ฉด์ด ์คํ๋๋ ๋ฐฉ๋ฒ์ ์ดํด (1) | 2024.02.21 |