4. Navigation

๊ธฐ๋ณธ์ ์œผ๋กœ ํŽ˜์ด์ง€๊ฐ€ ๋ฐ”๋€Œ๋ฉด ๋กœ๋”ฉ์ด ์ƒˆ๋กœ๋จ

๋งํฌ๋ฅผ ๊ฐ€๋กœ์ฑ„์„œ ์ด๋™์•ˆํ•˜๊ณ  ํŽ˜์ด์ง€ ๋ณ€๊ฒฝํ•˜๊ธฐ

HTML5์— ์ƒ๊ธด API History.pushState() ์ด์šฉ

<a href="/about" onClick={handleClick}>About</a>

const handleClick = (event: SyntheticEvent) => {
  event.preventDefault();
  const state = {};
  const title = '';
  const url = '/about';
  window.history.pushState(state, title, url); // ์‹ค์ œ๋กœ ๋„˜์–ด๊ฐ€์ง„ ์•Š๊ณ  ์ฃผ์†Œ๋งŒ ๋ฐ”๋€œ
};

window.history()

์œˆ๋„์šฐ์˜ ์—ด๋žŒ ์ด๋ ฅ์„ ์ตœ๊ทผ์— ๋ฐฉ๋ฌธํ•œ URL์˜ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜

HTML5์˜ history ๊ฐ์ฒด๋Š” ์‚ฌ์šฉ์ž ํžˆ์Šคํ† ๋ฆฌ์—์„œ์˜ ์•ž ๋’ค ์ด๋™์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ์œ ์šฉํ•œ ๋ฉ”์„œ๋“œ์™€ ์†์„ฑ์„ ์ œ๊ณต

  • history.back(): ์œˆ๋„์šฐ ์—ด๋žŒ ์ด๋ ฅ์—์„œ ๋’ค๋กœ ์ด๋™

  • history.forward(): ์œˆ๋„์šฐ ์—ด๋žŒ ์ด๋ ฅ์—์„œ ์•ž์œผ๋กœ ์ด๋™

  • history.pushState() : ์ƒˆ๋กœ์šด history๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉฐ ์‹ค์ œ ํŽ˜์ด์ง€ ์ด๋™์€ ์ผ์œผํ‚ค์ง€ ์•Š์Œ

์ƒˆ๋กœ๊ณ ์นจ ์—†์ด ํŽ˜์ด์ง€ ์ด๋™

<Link to="/">Home</Link>
<Link to="/about">About</Link>

๋‚ด๋น„๊ฒŒ์ด์…˜์šฉ ๋งํฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—์„œ ํ™•์ธ์‹œ <a> ํƒœ๊ทธ์— class="active"๊ฐ€ ์žกํžˆ๊ฒŒ ๋จ

<NavLink to="/">Home</NavLink>
<NavLink to="/about">About</NavLink>

ํŠน์ • ์ปดํฌ๋„ŒํŠธ๋กœ ์ด๋™ํ•ด์„œ ๋ฌด์–ธ๊ฐ€ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‚œ ๋’ค ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ์‹œํ‚ฌ๋•Œ ์‚ฌ์šฉ

export default function LogoutPage() {
  return (
    <Navigate to="/" />
  );
}

useNavigate

๋ฆฌ๋‹ค์ด๋ ‰์…˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ›…

  const navigate = useNavigate();

  const handleClickLogout = () => {
    navigate('/');
  };

  return (
    <button type="button" onClick = {handleClickLogout}>
      Log out
    </button>
  )

Last updated