๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
router์์ navigate๋ก ์ด๋์ state์ ๊ฐ์ฒด ํํ๋ก ๊ฐ์ ๋๊ฒจ์ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค.
๋ํ parameter ๋ฐฉ์๊ณผ๋ ๋ฌ๋ฆฌ ๋ฐ๋ก router url ๋ค์ ๊ฐ์ ์ค์ ํด์ฃผ์ง ์์๋ ๋๊ณ ,
url์ ๋๊ธฐ๋ ๊ฐ์ด ๋ ธ์ถ ๋์ง ์์์ ์ข์๋ค.
// ๋ณด๋ผ๋
navigate(URL, {state: {id: "user1"}})
// ๋ฐ์๋
import {useLocation} from "react-router";
const location = useLocation();
const id = location.state ? location.state.id : null; // <= "user1"
๊ธฐ์กด ๋ชฉ๋ก์์ ์์ธ์ด๋ํ ๋ ์๊ธดํ๊ฒ ์ฐ๊ธด ํ๋๋ฐ,
์ฅ์ ๋ง ์๋ ๊ฒ์ ์๋๋ผ์ ์๊ตฌ๋๋ ์๋น์ค ํํ์ ๋ง์ถฐ ์ ์ ํ ์ (์ธ์์์ ์ ์ผ ์ด๋ ค์ด..๐) ์ฐ๋ฉด ๋๊ฒ ๋ค.
์ฅ์
1. url์ ๊ฐ์ ๋ ธ์ถ ์ํค์ง ์๊ณ ๊ฐ์ ๋๊ธธ ์ ์๋ค.
2. url ๋์ ๋ค์๊ฐ ๋ ์๋ ์๋ ๊ฐ์ด ๋ถ์ง ์๊ธฐ ๋๋ฌธ์, ํน์๋ผ๋ pathname๊ฐ์ ๊ณ์ฐํด์ผํ๋ ๊ฒฝ์ฐ ์ผ๊ด๋๊ฒ ์ฌ์ฉํ ์ ์๋ค.
3. Routes์์ path ๊ฐ์ ๋ณ๋์ ์ค์ ์์ด ๋ฐ๋ก ์ธ ์ ์์ด์ ๊ฐํธํ๋ค.
4. ์๋ง.. ๊ทธ์ธ์๋ ๋ ๋ง์ ์ฅ์ ์ด ์์ ๊ฒ์ด๋ค...
๋จ์
1. url๋ก ๋ฐ๋ก ์ ๊ทผ์ด ํ์ํ ๊ฒฝ์ฐ๋ ๋๊ธฐ๋ state๊ฐ์ด ์์ผ๋ฏ๋ก ๊ฐ์ ์ ์ ์๋ค.
์๋ฅผ๋ค์ด ๋งํฌ๋ก๋ง ์์ธํ์ด์ง์ ์ ๊ทผํ๋๊ฒฝ์ฐ, ๋ชฉ๋ก์์ ๊ฒ์๊ธ ์์ด๋๋ฅผ ๋๊ธด๋ค๊ณ ๊ฐ์ ํ์๋, ๋์ด๊ฐ๋ ์์ด๋ ๊ฐ ์์ด ๋ฐ๋ก ์์ธ์ ๋ค์ด๊ฐ๊ฒ๋๋ฉด ๋ฐ์ ์์ด๋๊ฐ ์๊ธฐ ๋๋ฌธ์ ์๋ฌด๋ฐ ์ ๋ณด๋ฅผ ๋ฐ์ ์ ์๋ค.
2. ๊ฐ์ url์ธ ๊ฒฝ์ฐ ํด๋น๊ฐ์ useEffect๋ฅผ ํตํด์ ๊ฐ์งํด์ค์ผ ํ๋ค.
๋ฆฌ์กํธ ํน์ ๋ฌธ์ ์ ์ค์ ๋ค๋ฅธํ์ด์ง๋ก ์ด๋ํ์๋ ๊ธฐ์กด ์คํฌ๋กค์ ์์น๊ฐ ๊ทธ๋๋ก ๋จ์์์ด์, ๋ชจ๋ ํ์ด์ง๋ฅผ ๊ฐ์ธ๋ ๋ถ๋ถ์ pathname์ ๋ณํ๋ฅผ ๊ฐ์งํด์ window.scrollTo(0, 0)์ ๋ฃ์ด์คฌ์๋ค.
์ด๋ฐ ์ํ์์ ๊ฒ์๊ธ ์์ธ์ ๊ฒฝ์ฐ ๋ค์์ด๋ ์ด์ ํ์ด์ง๋ก ๋์ด๊ฐ๋ ค๋ฉด ๊ฐ์ url์ ์์ด๋ ๊ฐ๋ง ๋ฐ๋๋ ์ผ์ด์ค๊ธฐ ๋๋ฌธ์,
์ ์ฒด ์ ์ธ๋ ์๋์ฐ ์คํฌ๋กค์ ์๋จ์ผ๋ก ์ฌ๋ฆฌ๋ ์คํฌ๋ฆฝํธ๊ฐ ๋จน์ง ์์, ์ด๋ด๋๋ ์์ด๋ ๊ฐ์ด ๊ฒฐ๊ตญ state์ด๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ useEffect๋ก ๊ฐ์งํด์ ์ ๋ฐ์ดํธ ํด์ค์ผ ํ๋ค.
'๊ฐ๋ฐ ๐พ > ์ผํ๊ณ ,์ ๋ฆฌํ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ฐ์ธ ์ฌ์ด๋ ํ๋ก์ ํธ ๋ฐฐํฌ๊น์ง ์๋ฃ ํ๊ธฐ (2) | 2023.11.03 |
---|---|
React amchart ๋ฅผ ํ๋ฉด์~! (2) | 2023.01.06 |