NEXT.JS : Navigation

<angeLog/>ยท2024๋…„ 3์›” 5์ผ
0

NEXT.JS

๋ชฉ๋ก ๋ณด๊ธฐ
3/7
post-thumbnail

๐Ÿ’ก๋…ธ๋งˆ๋“œ์ฝ”๋” ๋‹ˆ๊ผฌ์Œค์˜ ๊ฐ•์˜๋ฅผ ๋ณด๋ฉฐ ๊ณต๋ถ€ํ•˜๋Š” ์‹œ๋ฆฌ์ฆˆ์ž…๋‹ˆ๋‹ค.

๋ฆฌ์•กํŠธ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋„ฅ์ŠคํŠธ์—์„œ๋„ aํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋Œ€์‹  LINK๋ผ๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.๐Ÿ‘‰๐ŸปNEXT.JS๊ณต์‹๋ฌธ์„œ
ํ”„๋กœ์ ํŠธ ์ตœ์ƒ๋‹จ ๋ฃจํŠธ์— component๋ผ๋Š” ํด๋”๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ทธ ์•ˆ์— Navigation.tsx๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.Navigation.tsxํŒŒ์ผ์— Link๋ฅผ importํ•˜๊ณ  UI๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ๋‹ค.

import Link from 'next/link'

COMPONENT IMPORT

Navigation.tsx๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” appํด๋”์˜ page.tsx์™€ ๊ฒฝ๋กœํด๋”์ธ aboutํด๋”์˜ page.tsxํŒŒ์ผ์— importํ•ด์•ผํ•œ๋‹ค.๊ฒฐ๊ณผ
๋ฉ‹์ง€๊ฒŒ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ณต์‚ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ๋ฅผ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์•„๋‹ˆ๋‹ค.

usePathname

usePathname
user๊ฐ€ ํ˜„์žฌ ๋จธ๋ฌผ๊ณ  ์žˆ๋Š” url์„ ์•Œ๋ ค์ฃผ๋Š” Hook.

Navigation.tsx์— usePathname์„ importํ•˜๊ณ , console๋กœ path๋ฅผ ์ฐ์–ด๋ณธ๋‹ค.

๋Œ€์ถฉ "use client"๋ฅผ ํŒŒ์ผ ์ตœ์ƒ๋‹จ์— ๋‘ฌ์•ผํ•œ๋‹ค๋Š” ๋ง ๊ฐ™๋‹ค. ์•ˆ๋‚ดํ•˜๋Š” ๋Œ€๋กœ "use client"๋ฅผ ์‚ฌ์šฉํ•ด๋ณธ๋‹ค.

'use client';
import Link from 'next/link';
import { usePathname } from 'next/navigation';

์—๋Ÿฌ๊ฐ€ ์‚ฌ๋ผ์ง€๊ณ  ์ฝ˜์†”์—” path๊ฐ€ ์ฐํ˜€์žˆ๋‹ค.
path์— ๋”ฐ๋ผ์„œ nav์˜†์— ๐Ÿ”ฅ์•„์ด์ฝ˜์„ ๋ณด์—ฌ์ง€๊ฒŒ ํ•ด๋ณด์•˜๋‹ค.

'use client';
import Link from 'next/link';
import { usePathname } from 'next/navigation';

export default function Navigation() {
  const path = usePathname();
  return (
    <nav>
      <ul>
        <li>
          <Link href="/">Home</Link>
          {path === '/' ? '๐Ÿ”ฅ' : ''}
        </li>
        <li>
          <Link href="/about">About</Link>
          {path === '/about' ? '๐Ÿ”ฅ' : ''}
        </li>
      </ul>
    </nav>
  );
}

๊ฒฐ๊ณผ

BOOYAH!

profile
์ผ๋‹จ ํ•ด๋ณผ๊ฒŒ์š”!โœ๐Ÿป

0๊ฐœ์˜ ๋Œ“๊ธ€