{"id":83255,"date":"2024-11-10T14:28:10","date_gmt":"2024-11-10T10:58:10","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/how-to-style-active-nav-links-in-server-components-in-nextjs-1193\/"},"modified":"2024-11-10T14:28:10","modified_gmt":"2024-11-10T10:58:10","slug":"how-to-style-active-nav-links-in-server-components-in-nextjs-1193","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/how-to-style-active-nav-links-in-server-components-in-nextjs-1193\/","title":{"rendered":"\u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0627\u06cc\u0644 \u062f\u0627\u062f\u0646 \u0628\u0647 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627\u06cc Nav \u0641\u0639\u0627\u0644 \u062f\u0631 \u0627\u062c\u0632\u0627\u06cc \u0633\u0631\u0648\u0631 \u062f\u0631 Next.js"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u0633\u0644\u0627\u0645\u060c \u0647\u0645\u0647! Next.js \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0628\u0633\u06cc\u0627\u0631 \u062f\u0627\u063a \u0627\u0633\u062a\u060c \u0628\u0647 \u062e\u0635\u0648\u0635 \u0628\u0627 \u0646\u0633\u062e\u0647 \u062c\u062f\u06cc\u062f 15\u060c \u06a9\u0647 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u062c\u0627\u0644\u0628 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f. \u0627\u0645\u0627 \u0627\u0645\u0631\u0648\u0632 \u062f\u0631 \u0645\u0648\u0631\u062f \u0622\u0646 \u0646\u06cc\u0633\u062a. \u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u062a\u0631\u06cc\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc Next.js \u0631\u0648\u062a\u0631 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0641\u0627\u06cc\u0644 \u0648 SSR \u062f\u0627\u062e\u0644\u06cc (Server-Side Rendering) \u0622\u0646 \u0627\u0633\u062a.<\/p>\n<p>SSR \u06cc\u06a9 \u0645\u0648\u0636\u0648\u0639 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0627\u0633\u062a\u060c \u0628\u0647 \u062e\u0635\u0648\u0635 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0635\u062d\u0628\u062a \u0627\u0632 \u0647\u0645\u06af\u0627\u0645 \u0633\u0627\u0632\u06cc \u062d\u0627\u0644\u062a \u0633\u0631\u0648\u0631 \u0648 \u0633\u0631\u0648\u06cc\u0633 \u06af\u06cc\u0631\u0646\u062f\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0645\u06cc \u0634\u0648\u062f\u060c \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0627\u0641\u0631\u0627\u062f \u0628\u0647 \u062c\u0627\u06cc \u0622\u0646 \u0631\u0646\u062f\u0631 \u0633\u0645\u062a \u0645\u0634\u062a\u0631\u06cc (CSR) \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u0645\u06cc \u06a9\u0646\u0646\u062f. \u0627\u0644\u0628\u062a\u0647\u060c \u0633\u0646\u0627\u0631\u06cc\u0648\u0647\u0627\u06cc\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0627\u062c\u0632\u0627\u06cc \u0633\u0631\u0648\u0631 \u0627\u0645\u06a9\u0627\u0646\u200c\u067e\u0630\u06cc\u0631 \u0646\u06cc\u0633\u062a\u0646\u062f\u060c \u0627\u0645\u0627 \u0646\u06a9\u062a\u0647 \u06a9\u0644\u06cc\u062f\u06cc \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 Next.js \u0627\u0633\u0627\u0633\u0627\u064b \u0628\u0631 \u0627\u0633\u0627\u0633 SSR \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u062a\u0627 \u0639\u0645\u0644\u06a9\u0631\u062f \u0648 SEO \u0631\u0627 \u0628\u0647\u0628\u0648\u062f \u0628\u062e\u0634\u062f\u060c \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0627\u0646\u062a\u062e\u0627\u0628 \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc\u06cc \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0627\u0632 \u0631\u0646\u062f\u0631\u06cc\u0646\u06af \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0633\u0648\u062f \u0645\u06cc\u200c\u0628\u0631\u0646\u062f.<\/p>\n<p>\u062e\u06cc\u0644\u06cc \u062e\u0648\u0628\u060c \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u06cc\u06a9 \u0646\u0648\u0627\u0631 \u0646\u0627\u0648\u0628\u0631\u06cc \u0628\u0627 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627\u06cc\u06cc \u0628\u0633\u0627\u0632\u06cc\u0645 \u06a9\u0647 \u0648\u0642\u062a\u06cc \u062f\u0631 \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u062e\u0627\u0635 \u0647\u0633\u062a\u06cc\u0645 \u0628\u0631\u062c\u0633\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u061f \u0631\u0648\u06cc\u06a9\u0631\u062f \u0627\u0635\u0644\u06cc \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0631\u0648\u06cc \u06cc\u06a9 \u0622\u0631\u0627\u06cc\u0647 \u0627\u0632 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627 \u062a\u06a9\u0631\u0627\u0631 \u06a9\u0646\u06cc\u062f \u0648 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0631\u062c\u0633\u062a\u0647 \u06a9\u0646\u06cc\u062f pathname \u0628\u0627 \u0645\u0633\u06cc\u0631 \u0641\u0639\u0644\u06cc \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u0645\u0637\u0627\u0628\u0642\u062a \u062f\u0627\u0631\u062f. \u0628\u0631\u0627\u06cc \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 pathname \u062f\u0631 Next.js \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0647 \u0634\u0645\u0627 usePathname (useRouter \u0628\u0631\u0627\u06cc \u0635\u0641\u062d\u0627\u062a \u0631\u0648\u062a\u0631) \u0642\u0644\u0627\u0628. \u0628\u0627 \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f\u060c \u0645\u0627 \u0628\u0647 \u0686\u06cc\u0632\u06cc \u0634\u0628\u06cc\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u062e\u0648\u0627\u0647\u06cc\u0645 \u0631\u0633\u06cc\u062f:<\/p>\n<p>&#8220;use client&#8221;;<br \/>\nimport { cn } from &#8220;@\/lib\/utils&#8221;;<br \/>\nimport { usePathname } from &#8220;next\/navigation&#8221;;<br \/>\nimport Link, { type LinkProps } from &#8220;next\/link&#8221;;<\/p>\n<p>type ClientNavProps = {<br \/>\n  links: LinkProps[];<br \/>\n};<\/p>\n<p>function ClientNav({ links }: ClientNavProps) {<br \/>\n  const pathname = usePathname();<\/p>\n<p>  const isActive = (href: LinkProps[&#8220;href&#8221;]) =&gt; {<br \/>\n    const hrefStr = href.toString();<br \/>\n    if (hrefStr === pathname) return true;<br \/>\n    if (hrefStr.length &gt; 1 &amp;&amp; pathname.startsWith(hrefStr)) return true;<br \/>\n    return false;<br \/>\n  };<\/p>\n<p>  return (<br \/>\n    &lt;nav className=&#8221;space-x-2&#8243;&gt;<br \/>\n      {links.map((e) =&gt; (<br \/>\n        &lt;Link<br \/>\n          {&#8230;e}<br \/>\n          key={e.href.toString()}<br \/>\n          className={cn(<br \/>\n            &#8220;px-2 py-1 border rounded-lg&#8221;,<br \/>\n            isActive(e.href) &amp;&amp; &#8220;bg-black text-white&#8221;<br \/>\n          )}<br \/>\n        \/&gt;<br \/>\n      ))}<br \/>\n    &lt;\/nav&gt;<br \/>\n  );<br \/>\n}<\/p>\n<p>export default ClientNav;<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0686\u06af\u0648\u0646\u0647 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f:<\/p>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0645\u0634\u06a9\u0644 \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0624\u0644\u0641\u0647 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0645\u0634\u062a\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0633\u0626\u0648 \u0627\u06cc\u062f\u0647\u200c\u0622\u0644 \u0646\u06cc\u0633\u062a. \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0642\u0644\u0627\u0628\u200c\u0647\u0627\u06cc \u06a9\u0644\u0627\u06cc\u0646\u062a \u0631\u0627 \u062f\u0631 \u0645\u0624\u0644\u0641\u0647\u200c\u0647\u0627\u06cc \u0633\u0631\u0648\u0631 \u0635\u062f\u0627 \u06a9\u0646\u06cc\u0645\u060c \u0628\u0627\u06cc\u062f \u0628\u0647 \u0627\u06cc\u0646 \u0633\u0624\u0627\u0644 \u0628\u067e\u0631\u062f\u0627\u0632\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0622\u0646 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f pathname \u062f\u0631 \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u067e\u06cc\u0648\u0646\u062f \u0641\u0639\u0644\u06cc \u0628\u0647 \u0635\u0648\u0631\u062a \u0628\u0631\u062c\u0633\u062a\u0647 \u0634\u062f\u0647.<\/p>\n<p>\u0648 \u067e\u0627\u0633\u062e \u0628\u0647 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u062f\u0634\u0648\u0627\u0631 \u0646\u06cc\u0633\u062a\u060c \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0645\u0641\u06cc\u062f \u0627\u0633\u062a. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645 pathname \u0628\u0647 \u0633\u0631\u0628\u0631\u06af \u0647\u0627\u06cc \u067e\u0627\u0633\u062e\u060c \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u06af\u0648\u0646\u0647 \u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0647\u0645\u0647 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0635\u0641\u062d\u0647 \u0641\u0639\u0627\u0644 \u0634\u0648\u062f:<\/p>\n<p>import { NextResponse } from &#8220;next\/server&#8221;;<br \/>\nimport type { NextRequest } from &#8220;next\/server&#8221;;<\/p>\n<p>export const config = {<br \/>\n  matcher: [&#8220;\/((?!api|_next\/static|_next\/image|favicon.ico).*)&#8221;],<br \/>\n};<\/p>\n<p>export default function middleware(request: NextRequest) {<br \/>\n  const requestHeaders = new Headers(request.headers);<br \/>\n  requestHeaders.set(&#8220;x-next-pathname&#8221;, request.nextUrl.pathname);<\/p>\n<p>  return NextResponse.next({ request: { headers: requestHeaders } });<br \/>\n}<\/p>\n<p>\u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u062f\u0627\u0634\u062a\u0646 x-next-pathname \u0628\u0627 \u062c\u0631\u06cc\u0627\u0646 pathname \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062a\u0627\u0628\u0639 \u0647\u062f\u0631 \u0628\u0647 \u0622\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645 (\u0628\u0647 \u062e\u0627\u0637\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 Next 15 \u0648 \u0628\u0627\u0644\u0627\u062a\u0631 \u0627\u06a9\u0646\u0648\u0646 \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0647\u0633\u062a\u0646\u062f: headers\u060c cookies\u060c params\u060c \u0648 searchParams).<\/p>\n<p>import { cn } from &#8220;@\/lib\/utils&#8221;;<br \/>\nimport { headers } from &#8220;next\/headers&#8221;;<br \/>\nimport Link, { type LinkProps } from &#8220;next\/link&#8221;;<\/p>\n<p>type ClientNavProps = {<br \/>\n  links: LinkProps[];<br \/>\n};<\/p>\n<p>async function ServerNav({ links }: ClientNavProps) {<br \/>\n  const headersList = await headers();<br \/>\n  const pathname = headersList.get(&#8220;x-next-pathname&#8221;) || &#8220;\/&#8221;;<\/p>\n<p>  const isActive = (href: LinkProps[&#8220;href&#8221;]) =&gt; {<br \/>\n    const hrefStr = href.toString();<br \/>\n    if (hrefStr === pathname) return true;<br \/>\n    if (hrefStr.length &gt; 1 &amp;&amp; pathname.startsWith(hrefStr)) return true;<br \/>\n    return false;<br \/>\n  };<\/p>\n<p>  return (<br \/>\n    &lt;nav className=&#8221;space-x-2&#8243;&gt;<br \/>\n      {links.map((e) =&gt; (<br \/>\n        &lt;Link<br \/>\n          {&#8230;e}<br \/>\n          key={e.href.toString()}<br \/>\n          className={cn(<br \/>\n            &#8220;px-2 py-1 border rounded-lg&#8221;,<br \/>\n            isActive(e.href) &amp;&amp; &#8220;bg-black text-white&#8221;<br \/>\n          )}<br \/>\n        \/&gt;<br \/>\n      ))}<br \/>\n    &lt;\/nav&gt;<br \/>\n  );<br \/>\n}<\/p>\n<p>export default ServerNav;<\/p>\n<p>\u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u06a9\u0627\u0646 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u0646\u0648\u0627\u0631 \u0646\u0627\u0648\u0628\u0631\u06cc \u0633\u0631\u0648\u0631 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0645\u0631\u0627\u0642\u0628 \u0628\u0627\u0634\u06cc\u062f. \u0627\u06cc\u0646 \u0646\u0645\u0648\u0646\u0647 \u062e\u0627\u0635 \u0641\u0642\u0637 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u062f page.tsx \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u060c \u0632\u06cc\u0631\u0627 \u0628\u0627\u06cc\u062f \u062f\u0631 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a URL \u062f\u0648\u0628\u0627\u0631\u0647 \u0631\u0646\u062f\u0631 \u0634\u0648\u0646\u062f.<\/p>\n<p>\u0627\u06cc\u0646 \u0627\u062d\u062a\u0645\u0627\u0644\u0627 \u0633\u0627\u062f\u0647 \u062a\u0631\u06cc\u0646 \u0631\u0627\u0647 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0646 \u06cc\u06a9 \u0645\u0624\u0644\u0641\u0647 \u0646\u0648\u0627\u0631 \u0646\u0627\u0648\u0628\u0631\u06cc \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0627\u0633\u062a \u06a9\u0647 \u067e\u06cc\u0648\u0646\u062f \u0641\u0639\u0627\u0644 \u0641\u0639\u0644\u06cc \u0631\u0627 \u0628\u0631\u062c\u0633\u062a\u0647 \u0645\u06cc \u06a9\u0646\u062f. \u062a\u0645\u0627\u0645 \u0634\u062f\u2014\u0645\u0645\u0646\u0648\u0646 \u06a9\u0647 \u062e\u0648\u0627\u0646\u062f\u06cc\u062f\u060c \u062f\u0641\u0639\u0647 \u0628\u0639\u062f \u0645\u06cc \u0628\u06cc\u0646\u0645\u062a!<\/p>\n<p>\u0633\u0644\u0627\u0645\u060c \u0647\u0645\u0647! Next.js \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0628\u0633\u06cc\u0627\u0631 \u062f\u0627\u063a \u0627\u0633\u062a\u060c \u0628\u0647 \u062e\u0635\u0648\u0635 \u0628\u0627 \u0646\u0633\u062e\u0647 \u062c\u062f\u06cc\u062f 15\u060c \u06a9\u0647 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u062c\u0627\u0644\u0628 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f. \u0627\u0645\u0627 \u0627\u0645\u0631\u0648\u0632 \u062f\u0631 \u0645\u0648\u0631\u062f \u0622\u0646 \u0646\u06cc\u0633\u062a. \u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u062a\u0631\u06cc\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc Next.js \u0631\u0648\u062a\u0631 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0641\u0627\u06cc\u0644 \u0648 SSR \u062f\u0627\u062e\u0644\u06cc (Server-Side Rendering) \u0622\u0646 \u0627\u0633\u062a.<\/p>\n<p>SSR \u06cc\u06a9 \u0645\u0648\u0636\u0648\u0639 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0627\u0633\u062a\u060c \u0628\u0647 \u062e\u0635\u0648\u0635 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0635\u062d\u0628\u062a \u0627\u0632 \u0647\u0645\u06af\u0627\u0645 \u0633\u0627\u0632\u06cc \u062d\u0627\u0644\u062a \u0633\u0631\u0648\u0631 \u0648 \u0633\u0631\u0648\u06cc\u0633 \u06af\u06cc\u0631\u0646\u062f\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0645\u06cc \u0634\u0648\u062f\u060c \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0627\u0641\u0631\u0627\u062f \u0628\u0647 \u062c\u0627\u06cc \u0622\u0646 \u0631\u0646\u062f\u0631 \u0633\u0645\u062a \u0645\u0634\u062a\u0631\u06cc (CSR) \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u0645\u06cc \u06a9\u0646\u0646\u062f. \u0627\u0644\u0628\u062a\u0647\u060c \u0633\u0646\u0627\u0631\u06cc\u0648\u0647\u0627\u06cc\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0627\u062c\u0632\u0627\u06cc \u0633\u0631\u0648\u0631 \u0627\u0645\u06a9\u0627\u0646\u200c\u067e\u0630\u06cc\u0631 \u0646\u06cc\u0633\u062a\u0646\u062f\u060c \u0627\u0645\u0627 \u0646\u06a9\u062a\u0647 \u06a9\u0644\u06cc\u062f\u06cc \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 Next.js \u0627\u0633\u0627\u0633\u0627\u064b \u0628\u0631 \u0627\u0633\u0627\u0633 SSR \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u062a\u0627 \u0639\u0645\u0644\u06a9\u0631\u062f \u0648 SEO \u0631\u0627 \u0628\u0647\u0628\u0648\u062f \u0628\u062e\u0634\u062f\u060c \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0627\u0646\u062a\u062e\u0627\u0628 \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc\u06cc \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0627\u0632 \u0631\u0646\u062f\u0631\u06cc\u0646\u06af \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0633\u0648\u062f \u0645\u06cc\u200c\u0628\u0631\u0646\u062f.<\/p>\n<p>\u062e\u06cc\u0644\u06cc \u062e\u0648\u0628\u060c \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u06cc\u06a9 \u0646\u0648\u0627\u0631 \u0646\u0627\u0648\u0628\u0631\u06cc \u0628\u0627 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627\u06cc\u06cc \u0628\u0633\u0627\u0632\u06cc\u0645 \u06a9\u0647 \u0648\u0642\u062a\u06cc \u062f\u0631 \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u062e\u0627\u0635 \u0647\u0633\u062a\u06cc\u0645 \u0628\u0631\u062c\u0633\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u061f \u0631\u0648\u06cc\u06a9\u0631\u062f \u0627\u0635\u0644\u06cc \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0631\u0648\u06cc \u06cc\u06a9 \u0622\u0631\u0627\u06cc\u0647 \u0627\u0632 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627 \u062a\u06a9\u0631\u0627\u0631 \u06a9\u0646\u06cc\u062f \u0648 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0631\u062c\u0633\u062a\u0647 \u06a9\u0646\u06cc\u062f <code>pathname<\/code> \u0628\u0627 \u0645\u0633\u06cc\u0631 \u0641\u0639\u0644\u06cc \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u0645\u0637\u0627\u0628\u0642\u062a \u062f\u0627\u0631\u062f. \u0628\u0631\u0627\u06cc \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 <code>pathname<\/code> \u062f\u0631 Next.js \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0647 \u0634\u0645\u0627 <code>usePathname<\/code> (<code>useRouter<\/code> \u0628\u0631\u0627\u06cc \u0635\u0641\u062d\u0627\u062a \u0631\u0648\u062a\u0631) \u0642\u0644\u0627\u0628. \u0628\u0627 \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f\u060c \u0645\u0627 \u0628\u0647 \u0686\u06cc\u0632\u06cc \u0634\u0628\u06cc\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u062e\u0648\u0627\u0647\u06cc\u0645 \u0631\u0633\u06cc\u062f:\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"dl\">\"<\/span><span class=\"s2\">use client<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">cn<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@\/lib\/utils<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">usePathname<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">next\/navigation<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">Link<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span> <span class=\"kd\">type<\/span> <span class=\"nx\">LinkProps<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">next\/link<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">type<\/span> <span class=\"nx\">ClientNavProps<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n  <span class=\"na\">links<\/span><span class=\"p\">:<\/span> <span class=\"nx\">LinkProps<\/span><span class=\"p\">[];<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"kd\">function<\/span> <span class=\"nf\">ClientNav<\/span><span class=\"p\">({<\/span> <span class=\"nx\">links<\/span> <span class=\"p\">}:<\/span> <span class=\"nx\">ClientNavProps<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">pathname<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">usePathname<\/span><span class=\"p\">();<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">isActive<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">href<\/span><span class=\"p\">:<\/span> <span class=\"nx\">LinkProps<\/span><span class=\"p\">[<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">href<\/span><span class=\"dl\">\"<\/span><span class=\"p\">])<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">hrefStr<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">href<\/span><span class=\"p\">.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">();<\/span>\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">hrefStr<\/span> <span class=\"o\">===<\/span> <span class=\"nx\">pathname<\/span><span class=\"p\">)<\/span> <span class=\"k\">return<\/span> <span class=\"kc\">true<\/span><span class=\"p\">;<\/span>\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">hrefStr<\/span><span class=\"p\">.<\/span><span class=\"nx\">length<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">1<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"nx\">pathname<\/span><span class=\"p\">.<\/span><span class=\"nf\">startsWith<\/span><span class=\"p\">(<\/span><span class=\"nx\">hrefStr<\/span><span class=\"p\">))<\/span> <span class=\"k\">return<\/span> <span class=\"kc\">true<\/span><span class=\"p\">;<\/span>\n    <span class=\"k\">return<\/span> <span class=\"kc\">false<\/span><span class=\"p\">;<\/span>\n  <span class=\"p\">};<\/span>\n\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">&lt;<\/span><span class=\"nt\">nav<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"space-x-2\"<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"si\">{<\/span><span class=\"nx\">links<\/span><span class=\"p\">.<\/span><span class=\"nf\">map<\/span><span class=\"p\">((<\/span><span class=\"nx\">e<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">(<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nc\">Link<\/span>\n          <span class=\"si\">{<\/span><span class=\"p\">...<\/span><span class=\"nx\">e<\/span><span class=\"si\">}<\/span>\n          <span class=\"na\">key<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nx\">href<\/span><span class=\"p\">.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">()<\/span><span class=\"si\">}<\/span>\n          <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nf\">cn<\/span><span class=\"p\">(<\/span>\n            <span class=\"dl\">\"<\/span><span class=\"s2\">px-2 py-1 border rounded-lg<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n            <span class=\"nf\">isActive<\/span><span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nx\">href<\/span><span class=\"p\">)<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">bg-black text-white<\/span><span class=\"dl\">\"<\/span>\n          <span class=\"p\">)<\/span><span class=\"si\">}<\/span>\n        <span class=\"p\">\/&gt;<\/span>\n      <span class=\"p\">))<\/span><span class=\"si\">}<\/span>\n    <span class=\"p\">&lt;\/<\/span><span class=\"nt\">nav<\/span><span class=\"p\">&gt;<\/span>\n  <span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"nx\">ClientNav<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0686\u06af\u0648\u0646\u0647 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f:<\/p>\n<p><\/p>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0645\u0634\u06a9\u0644 \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0624\u0644\u0641\u0647 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0645\u0634\u062a\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0633\u0626\u0648 \u0627\u06cc\u062f\u0647\u200c\u0622\u0644 \u0646\u06cc\u0633\u062a. \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0642\u0644\u0627\u0628\u200c\u0647\u0627\u06cc \u06a9\u0644\u0627\u06cc\u0646\u062a \u0631\u0627 \u062f\u0631 \u0645\u0624\u0644\u0641\u0647\u200c\u0647\u0627\u06cc \u0633\u0631\u0648\u0631 \u0635\u062f\u0627 \u06a9\u0646\u06cc\u0645\u060c \u0628\u0627\u06cc\u062f \u0628\u0647 \u0627\u06cc\u0646 \u0633\u0624\u0627\u0644 \u0628\u067e\u0631\u062f\u0627\u0632\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0622\u0646 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f <code>pathname<\/code> \u062f\u0631 \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u067e\u06cc\u0648\u0646\u062f \u0641\u0639\u0644\u06cc \u0628\u0647 \u0635\u0648\u0631\u062a \u0628\u0631\u062c\u0633\u062a\u0647 \u0634\u062f\u0647.<\/p>\n<p>\u0648 \u067e\u0627\u0633\u062e \u0628\u0647 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u062f\u0634\u0648\u0627\u0631 \u0646\u06cc\u0633\u062a\u060c \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0645\u0641\u06cc\u062f \u0627\u0633\u062a. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645 <code>pathname<\/code> \u0628\u0647 \u0633\u0631\u0628\u0631\u06af \u0647\u0627\u06cc \u067e\u0627\u0633\u062e\u060c \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u06af\u0648\u0646\u0647 \u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0647\u0645\u0647 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0635\u0641\u062d\u0647 \u0641\u0639\u0627\u0644 \u0634\u0648\u062f:\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">NextResponse<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">next\/server<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"kd\">type<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">NextRequest<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">next\/server<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"kd\">const<\/span> <span class=\"nx\">config<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n  <span class=\"na\">matcher<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">\/((?!api|_next\/static|_next\/image|favicon.ico).*)<\/span><span class=\"dl\">\"<\/span><span class=\"p\">],<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">middleware<\/span><span class=\"p\">(<\/span><span class=\"nx\">request<\/span><span class=\"p\">:<\/span> <span class=\"nx\">NextRequest<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">requestHeaders<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">Headers<\/span><span class=\"p\">(<\/span><span class=\"nx\">request<\/span><span class=\"p\">.<\/span><span class=\"nx\">headers<\/span><span class=\"p\">);<\/span>\n  <span class=\"nx\">requestHeaders<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">x-next-pathname<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">request<\/span><span class=\"p\">.<\/span><span class=\"nx\">nextUrl<\/span><span class=\"p\">.<\/span><span class=\"nx\">pathname<\/span><span class=\"p\">);<\/span>\n\n  <span class=\"k\">return<\/span> <span class=\"nx\">NextResponse<\/span><span class=\"p\">.<\/span><span class=\"nf\">next<\/span><span class=\"p\">({<\/span> <span class=\"na\">request<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span> <span class=\"na\">headers<\/span><span class=\"p\">:<\/span> <span class=\"nx\">requestHeaders<\/span> <span class=\"p\">}<\/span> <span class=\"p\">});<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u062f\u0627\u0634\u062a\u0646 <code>x-next-pathname<\/code> \u0628\u0627 \u062c\u0631\u06cc\u0627\u0646 <code>pathname<\/code> \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062a\u0627\u0628\u0639 \u0647\u062f\u0631 \u0628\u0647 \u0622\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645 (\u0628\u0647 \u062e\u0627\u0637\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 Next 15 \u0648 \u0628\u0627\u0644\u0627\u062a\u0631 \u0627\u06a9\u0646\u0648\u0646 \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0647\u0633\u062a\u0646\u062f: <code>headers<\/code>\u060c <code>cookies<\/code>\u060c <code>params<\/code>\u060c \u0648 <code>searchParams<\/code>).\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">cn<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@\/lib\/utils<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">headers<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">next\/headers<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">Link<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span> <span class=\"kd\">type<\/span> <span class=\"nx\">LinkProps<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">next\/link<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">type<\/span> <span class=\"nx\">ClientNavProps<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n  <span class=\"na\">links<\/span><span class=\"p\">:<\/span> <span class=\"nx\">LinkProps<\/span><span class=\"p\">[];<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"k\">async<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">ServerNav<\/span><span class=\"p\">({<\/span> <span class=\"nx\">links<\/span> <span class=\"p\">}:<\/span> <span class=\"nx\">ClientNavProps<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">headersList<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nf\">headers<\/span><span class=\"p\">();<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">pathname<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">headersList<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">x-next-pathname<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)<\/span> <span class=\"o\">||<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">\/<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">isActive<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">href<\/span><span class=\"p\">:<\/span> <span class=\"nx\">LinkProps<\/span><span class=\"p\">[<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">href<\/span><span class=\"dl\">\"<\/span><span class=\"p\">])<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">hrefStr<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">href<\/span><span class=\"p\">.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">();<\/span>\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">hrefStr<\/span> <span class=\"o\">===<\/span> <span class=\"nx\">pathname<\/span><span class=\"p\">)<\/span> <span class=\"k\">return<\/span> <span class=\"kc\">true<\/span><span class=\"p\">;<\/span>\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">hrefStr<\/span><span class=\"p\">.<\/span><span class=\"nx\">length<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">1<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"nx\">pathname<\/span><span class=\"p\">.<\/span><span class=\"nf\">startsWith<\/span><span class=\"p\">(<\/span><span class=\"nx\">hrefStr<\/span><span class=\"p\">))<\/span> <span class=\"k\">return<\/span> <span class=\"kc\">true<\/span><span class=\"p\">;<\/span>\n    <span class=\"k\">return<\/span> <span class=\"kc\">false<\/span><span class=\"p\">;<\/span>\n  <span class=\"p\">};<\/span>\n\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">&lt;<\/span><span class=\"nt\">nav<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"space-x-2\"<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"si\">{<\/span><span class=\"nx\">links<\/span><span class=\"p\">.<\/span><span class=\"nf\">map<\/span><span class=\"p\">((<\/span><span class=\"nx\">e<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">(<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nc\">Link<\/span>\n          <span class=\"si\">{<\/span><span class=\"p\">...<\/span><span class=\"nx\">e<\/span><span class=\"si\">}<\/span>\n          <span class=\"na\">key<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nx\">href<\/span><span class=\"p\">.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">()<\/span><span class=\"si\">}<\/span>\n          <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nf\">cn<\/span><span class=\"p\">(<\/span>\n            <span class=\"dl\">\"<\/span><span class=\"s2\">px-2 py-1 border rounded-lg<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n            <span class=\"nf\">isActive<\/span><span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nx\">href<\/span><span class=\"p\">)<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">bg-black text-white<\/span><span class=\"dl\">\"<\/span>\n          <span class=\"p\">)<\/span><span class=\"si\">}<\/span>\n        <span class=\"p\">\/&gt;<\/span>\n      <span class=\"p\">))<\/span><span class=\"si\">}<\/span>\n    <span class=\"p\">&lt;\/<\/span><span class=\"nt\">nav<\/span><span class=\"p\">&gt;<\/span>\n  <span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"nx\">ServerNav<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u06a9\u0627\u0646 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u0646\u0648\u0627\u0631 \u0646\u0627\u0648\u0628\u0631\u06cc \u0633\u0631\u0648\u0631 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0645\u0631\u0627\u0642\u0628 \u0628\u0627\u0634\u06cc\u062f. \u0627\u06cc\u0646 \u0646\u0645\u0648\u0646\u0647 \u062e\u0627\u0635 \u0641\u0642\u0637 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u062f <code>page.tsx<\/code> \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u060c \u0632\u06cc\u0631\u0627 \u0628\u0627\u06cc\u062f \u062f\u0631 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a URL \u062f\u0648\u0628\u0627\u0631\u0647 \u0631\u0646\u062f\u0631 \u0634\u0648\u0646\u062f.<\/p>\n<p>\u0627\u06cc\u0646 \u0627\u062d\u062a\u0645\u0627\u0644\u0627 \u0633\u0627\u062f\u0647 \u062a\u0631\u06cc\u0646 \u0631\u0627\u0647 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0646 \u06cc\u06a9 \u0645\u0624\u0644\u0641\u0647 \u0646\u0648\u0627\u0631 \u0646\u0627\u0648\u0628\u0631\u06cc \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0627\u0633\u062a \u06a9\u0647 \u067e\u06cc\u0648\u0646\u062f \u0641\u0639\u0627\u0644 \u0641\u0639\u0644\u06cc \u0631\u0627 \u0628\u0631\u062c\u0633\u062a\u0647 \u0645\u06cc \u06a9\u0646\u062f. \u062a\u0645\u0627\u0645 \u0634\u062f\u2014\u0645\u0645\u0646\u0648\u0646 \u06a9\u0647 \u062e\u0648\u0627\u0646\u062f\u06cc\u062f\u060c \u062f\u0641\u0639\u0647 \u0628\u0639\u062f \u0645\u06cc \u0628\u06cc\u0646\u0645\u062a!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u0633\u0644\u0627\u0645\u060c \u0647\u0645\u0647! Next.js \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0628\u0633\u06cc\u0627\u0631 \u062f\u0627\u063a \u0627\u0633\u062a\u060c \u0628\u0647 \u062e\u0635\u0648\u0635 \u0628\u0627 \u0646\u0633\u062e\u0647 \u062c\u062f\u06cc\u062f 15\u060c \u06a9\u0647 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u062c\u0627\u0644\u0628 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f. \u0627\u0645\u0627 \u0627\u0645\u0631\u0648\u0632 \u062f\u0631 \u0645\u0648\u0631\u062f \u0622\u0646 \u0646\u06cc\u0633\u062a. \u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u062a\u0631\u06cc\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc Next.js \u0631\u0648\u062a\u0631 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0641\u0627\u06cc\u0644 \u0648 SSR \u062f\u0627\u062e\u0644\u06cc (Server-Side Rendering) \u0622\u0646 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":83256,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-83255","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/83255","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=83255"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/83255\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/83256"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=83255"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=83255"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=83255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}