<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های بهزاد حاجی احمدی</title><link>https://virgool.ir/feed/@behzad.ha</link><description>توسعه نرم افزار و کد نویسی دقیقا مثل تولید یک محصول فیزیکی سخت و پر برکت هست.</description><language>fa</language><pubDate>2026-11-11 00:11:14</pubDate><image><url>https://files.virgool.ir/upload/users/1609291/avatar/QT6sS9.jpeg</url><title>بهزاد حاجی احمدی</title><link>https://virgool.ir/@behzad.ha</link></image><item><title>هشتگ (Hash tag) در Next.js</title><link>https://virgool.ir/@behzad.ha/هشتگ-hash-tag-در-nextjs-qtsmsqzaqjut</link><description>اضافه کردن و خواند هشتگ در Next.js در ورژن های 13 به بالا که زمانی که از App Router استفاده میشه کمی چالش برانگیز هست.از روش زیر میشه این موضوع را مدیریت کرد.میتونم یک هوک تعریف کنیم که قابل استفاده در تمام پروژه باشه و نتیجه هوک میشه هشتگ مورد نظر.&#39;use client&#39;&#xA;&#xA;import { useParams } from &#39;next/navigation&#39;&#xA;import { useEffect, useState } from &#39;react&#39;&#xA;&#xA;const getHash = () =&gt;&#xA;  typeof window !== &#39;undefined&#39; ? .hash : &#39;&#39;&#xA;&#xA;const useHash = () =&gt; {&#xA;  const [isClient, setIsClient] = useState(false)&#xA;  const [hash, setHash] = useState&lt;string&gt;(getHash())&#xA;  const params = useParams()&#xA;&#xA;  useEffect(() =&gt; {&#xA;    setIsClient(true)&#xA;    setHash(getHash())&#xA;  }, [params])&#xA;&#xA;  return isClient ? hash : &#39;&#39;&#xA;}&#xA;&#xA;export default useHashنحوه استفاده:&#39;use client&#39;&#xA;&#xA;import useHash from &#39;./useHash&#39;&#xA;&#xA;const HashDisplay = () =&gt; {&#xA;  const hash = useHash()&#xA;&#xA;  return (&#xA;    &lt;div&gt;&#xA;      &lt;h2&gt;Current Hash:&lt;/h2&gt;&#xA;      {hash ? (&#xA;        &lt;p&gt;{hash}&lt;/p&gt;&#xA;      ) : (&#xA;        &lt;p&gt;No hash present in the URL&lt;/p&gt;&#xA;      )}&#xA;    &lt;/div&gt;&#xA;  )&#xA;}&#xA;&#xA;export default HashDisplay</description><category>بهزاد حاجی احمدی</category><author>بهزاد حاجی احمدی</author><pubDate>Tue, 17 Sep 2024 10:46:24 +0330</pubDate></item><item><title>تغییر React Router, nested router از ورژن 5 به 6</title><link>https://virgool.ir/@behzad.ha/react-router-v6-ew5qtt6mdd3r</link><description>سلام همکار عزیز :)در ورژن 5 React Router برای تعریف Route های تو در تو یا nested، داخل یکی از کامپوننت ها موجود، به شکل زیر بوده:فرض بر این هست که کامپوننت اصلی App هست و یک کامپوننت دیگه داریم به نام User که قرار هست در اون Nested Route داشته باشیم// This is a React Router v5 app&#xA;import {&#xA;  BrowserRouter,&#xA;  Switch,&#xA;  Route,&#xA;  Link,&#xA;  useRouteMatch,&#xA;} from &#34;react-router-dom&#34;&#xA;&#xA;function App() {&#xA;  return (&#xA;    &lt;BrowserRouter&gt;&#xA;      &lt;Switch&gt;&#xA;        &lt;Route exact path=&#34;/&#34;&gt;&#xA;          &lt;Home /&gt;&#xA;        &lt;/Route&gt;&#xA;        &lt;Route path=&#34;/users&#34;&gt;&#xA;          &lt;Users /&gt;&#xA;        &lt;/Route&gt;&#xA;      &lt;/Switch&gt;&#xA;    &lt;/BrowserRouter&gt;&#xA;  );&#xA;}&#xA;&#xA;&#xA;function Users() {&#xA;  // در ورژن 5 روت های تو در تو توسط فرزند رندر میشد برای همین &#xA;  // مجبورا از سوییچ در تمام روت ها استفاده میشد و&#xA;  // از match.url and match.path باید استفاده مشد&#xA;&#xA;  let match = useRouteMatch();&#xA;&#xA;  return (&#xA;    &lt;div&gt;&#xA;      &lt;nav&gt;&#xA;        &lt;Link to={`${match.url}/me`}&gt;My Profile&lt;/Link&gt;&#xA;      &lt;/nav&gt;&#xA;&#xA;      &lt;Switch&gt;&#xA;        &lt;Route path={`${match.path}/me`}&gt;&#xA;          &lt;OwnUserProfile /&gt;&#xA;        &lt;/Route&gt;&#xA;        &lt;Route path={`${match.path}/:id`}&gt;&#xA;          &lt;UserProfile /&gt;&#xA;        &lt;/Route&gt;&#xA;      &lt;/Switch&gt;&#xA;    &lt;/div&gt;&#xA;  );&#xA;}و خداروشکر الان در ورژن 6 خیلی این موضوع بهبود یافته و به شکل زیر شده:// This is a React Router v6 app&#xA;import {&#xA;  BrowserRouter,&#xA;  Routes,&#xA;  Route,&#xA;  Link,&#xA;} from &#34;react-router-dom&#34;&#xA;&#xA;function App() {&#xA;  return (&#xA;    &lt;BrowserRouter&gt;&#xA;      &lt;Routes&gt;&#xA;        &lt;Route path=&#34;/&#34; element={&lt;Home /&gt;} /&gt;&#xA;        &lt;Route path=&#34;users/*&#34; element={&lt;Users /&gt;} /&gt;&#xA;      &lt;/Routes&gt;&#xA;    &lt;/BrowserRouter&gt;&#xA;  );&#xA;}&#xA;&#xA;function Users() {&#xA;  return (&#xA;    &lt;div&gt;&#xA;      &lt;nav&gt;&#xA;        &lt;Link to=&#34;me&#34;&gt;My Profile&lt;/Link&gt;&#xA;      &lt;/nav&gt;&#xA;&#xA;      &lt;Routes&gt;&#xA;        &lt;Route path=&#34;:id&#34; element={&lt;UserProfile /&gt;} /&gt;&#xA;        &lt;Route path=&#34;me&#34; element={&lt;OwnUserProfile /&gt;} /&gt;&#xA;      &lt;/Routes&gt;&#xA;    &lt;/div&gt;&#xA;  );&#xA;}امیدوارم که مطلب کمکتون کرده باشه.موفق باشید</description><category>بهزاد حاجی احمدی</category><author>بهزاد حاجی احمدی</author><pubDate>Mon, 27 Jun 2022 19:49:05 +0430</pubDate></item></channel></rss>