<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Shakil Ahmed Atik</title>
    <description>The latest articles on DEV Community by Shakil Ahmed Atik (@shakilahmedatik).</description>
    <link>https://dev.to/shakilahmedatik</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F601691%2F60caf89c-5e58-4ac6-8f86-9782df5ddc51.jpeg</url>
      <title>DEV Community: Shakil Ahmed Atik</title>
      <link>https://dev.to/shakilahmedatik</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shakilahmedatik"/>
    <language>en</language>
    <item>
      <title> রিয়েক্ট রাউটার ডম v6 - Changes &amp; Updates</title>
      <dc:creator>Shakil Ahmed Atik</dc:creator>
      <pubDate>Fri, 10 Dec 2021 08:20:57 +0000</pubDate>
      <link>https://dev.to/shakilahmedatik/riyyektt-raauttaar-ddm-v6-changes-updates-2jbc</link>
      <guid>https://dev.to/shakilahmedatik/riyyektt-raauttaar-ddm-v6-changes-updates-2jbc</guid>
      <description>&lt;p&gt;সম্প্রতি React Router Dom তাদের ভার্সন আপডেট করে ভার্সন ৬ রিলিজ করেছে। এই ভার্সনে বেশ কিছু ব্রেকিং চেঞ্জ এবং আপডেট এসেছে যেগুলো পূর্ববর্তী ভার্সন গুলো থেকে বেশ ভিন্ন এবং নতুন। আজকের এই ব্লগে React Router Dom ভার্সন ৬ এর সকল ব্রেকিং চেঞ্জ এবং নিউ ফিচার গুলো সম্পর্কে উদাহরন সহ বিস্তারিত আলোচনা করা হবে।&lt;/p&gt;

&lt;h2&gt;
  
  
  কিভাবে ইন্সটল করবো?
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Npm: npm install react-router@next react-router-dom@next&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Yarn: yarn add react-router@next react-router-dom@next&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  1. Switch এর পরিবর্তে Routes এসেছে
&lt;/h2&gt;

&lt;p&gt;React Router Dom ভার্সন ৬ এ &lt;code&gt;&amp;lt;Switch&amp;gt;&lt;/code&gt; রিমুভ করে এর পরিবর্তে &lt;code&gt;&amp;lt;Routes&amp;gt;&lt;/code&gt; আনা হয়েছে। এটিতে &lt;code&gt;&amp;lt;Switch&amp;gt;&lt;/code&gt; এর প্রায় সব বৈশিষ্ট্য থাকার পাশাপাশি বেশ কিছু এক্সটা ফিচার রয়েছে।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;উদাহরনঃ&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;React Router v5&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { BrowserRouter, Switch, Route } from 'react-router-dom';
const App = () =&amp;gt; {
  return (
    &amp;lt;BrowserRouter&amp;gt;
      &amp;lt;Switch&amp;gt;
        &amp;lt;Route exact path="/" component={Home} /&amp;gt;
        &amp;lt;Route path="/dashboard" component={Dashboard} /&amp;gt;
      &amp;lt;/Switch&amp;gt;
    &amp;lt;/BrowserRouter&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;u&gt;React Router v6&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { BrowserRouter, Routes, Route } from 'react-router-dom';
const App = () =&amp;gt; {
  return (
    &amp;lt;BrowserRouter&amp;gt;
      &amp;lt;Routes&amp;gt;
        &amp;lt;Route path="/" element={&amp;lt;Home /&amp;gt;} /&amp;gt;
        &amp;lt;Route path="dashboard" element={&amp;lt;Dashboard/&amp;gt;} /&amp;gt;
      &amp;lt;/Routes&amp;gt;
    &amp;lt;/BrowserRouter&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ভার্সন ৬ এ ভার্সন ৫ এর মতন আর component কে প্রপ্স বা চিল্ড্রেন আঁকারে পাঠানো লাগেনা। element প্রপ এর ভেতর jsx ফরমেটে component কে পাঠাতে হয়।&lt;/p&gt;

&lt;h2&gt;
  
  
  2. component এর বদলে এসেছে element প্রপ
&lt;/h2&gt;

&lt;p&gt;আপনি যদি উপরের উদাহরণে লক্ষ্য করেন, ভার্সন ৬ এ  আমরা component এর পরিবর্তে element ব্যবহার করছি। এটি অনেক হেল্পফুল একটা ফিচার, এখন আমরা সরাসরি element e  প্রপস পাঠাতে পারি।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;উদাহরনঃ&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;u&gt;&lt;strong&gt;React Router v5&lt;/strong&gt;&lt;/u&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Route exact path="/" component={Home} /&amp;gt;
&amp;lt;Route path="/dashboard" render={routeProps =&amp;gt; (
    &amp;lt;Dashboard isAdmin={true} /&amp;gt;
  )}
/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;u&gt;React Router v6&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Route path="/" element={&amp;lt;Home /&amp;gt;} /&amp;gt;
&amp;lt;Route path="dashboard" element={&amp;lt;Dashboard isAdmin={true} /&amp;gt;} /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. Exact এবং strict প্রপ গায়েবুল হাওয়া
&lt;/h2&gt;

&lt;p&gt;ভার্সন ৬ এ সবগুলো রাউট exactly ম্যাচ করে বাই ডিফল্ট তাই extact এবং strict প্রপের প্রয়োজন নেই।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;উদাহরনঃ&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;React Router v5&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Route exact path="/" component={Home} /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;u&gt;React Router v6&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Route path="/" element={&amp;lt;Home /&amp;gt;} /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4.  Relative paths এবং links
&lt;/h2&gt;

&lt;p&gt;ভার্সন ৬ এ, paths এবং link দূটোই তাদের পেরেন্টে রাউটের সাথে রিলেটিভ। তাই এখন আমাদের রিলেটিভ পাথের প্রয়োজন হলে আমরা  “/” ব্যবহার করা ছাড়াই সেটা করতে পারি।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;উদাহরনঃ&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;React Router v5&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Route exact path="/" component={Home} /&amp;gt;
&amp;lt;Route path="/dashboard" component={Dashboard} /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;u&gt;React Router v6&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Route path="/" element={&amp;lt;Home /&amp;gt;} /&amp;gt;
&amp;lt;Route path="dashboard" element={&amp;lt;Dashboard /&amp;gt;} /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  5. Nested Routes এখন আরো সহজ
&lt;/h2&gt;

&lt;p&gt;রেগুলার রিয়েক্ট এলিমেন্টের মতন এখন শুধু চাইল্ড রাউট গুলোকে পেরেন্ট রাউট দিয়ে র‍্যাপ করে দিলেই হয়ে যাবে নেস্টেড রাউট।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;উদাহরনঃ&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;React Router v5&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Route exact path="/" component={Home} /&amp;gt;
&amp;lt;Route path="/users" component={Users} /&amp;gt;
// ....
users.js
import { useRouteMatch } from 'react-router-dom';
const Users = () =&amp;gt; {
  const { path } = useRouteMatch();
return (
    &amp;lt;div&amp;gt;
      &amp;lt;Switch&amp;gt;
        &amp;lt;Route path={`${path}/:id`} component={UserInfo} /&amp;gt;
        &amp;lt;Route path={`${path}/profile`} component={UserProfile} /&amp;gt;
      &amp;lt;/Switch&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;u&gt;React Router v6&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Route path="/" element={&amp;lt;Home /&amp;gt;} /&amp;gt;
&amp;lt;Route path="users" element={&amp;lt;Users /&amp;gt;}&amp;gt;
  &amp;lt;Route path=":id" element={&amp;lt;UserInfo /&amp;gt;} /&amp;gt;
  &amp;lt;Route path="profile" element={&amp;lt;UserProfile /&amp;gt;} /&amp;gt;
&amp;lt;/Route&amp;gt;
// ....
users.js
import { Outlet } from 'react-router-dom';
const Users = () =&amp;gt; {
  return (
    &amp;lt;div&amp;gt;
      &amp;lt;Outlet/&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  6. useHistory এর পরিবর্তে এসেছে useNavigte
&lt;/h2&gt;

&lt;p&gt;useHistory কে গায়েবুল হাওয়া করে দিয়ে এর পরিবর্তে চলে এসেছে আরো বেশি পাওয়ারফুল এবং ফিচার প্যাকড useNavigate হুক।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;উদাহরনঃ&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;React Router v5&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { useHistory } from 'react-router-dom';
const CustomButton = props =&amp;gt; {
  const history = useHistory();
  const handleClick = () =&amp;gt; {
    history.push('/users');
  }
  return &amp;lt;button onClick={handleClick}&amp;gt;{props.label}&amp;lt;/button&amp;gt;;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;u&gt;React Router v6&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { useNavigate } from 'react-router-dom';
const CustomButton = props =&amp;gt; {
  const navigate = useNavigate();
  const handleClick = () =&amp;gt; {
    navigate('/users');
  }
  return &amp;lt;button onClick={handleClick}&amp;gt;{props.label}&amp;lt;/button&amp;gt;;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  7. আরো বেশি অপটিমাইজড, আরো বেশি পাওয়ারফুল
&lt;/h2&gt;

&lt;p&gt;ভার্সন ৫ এর চেয়ে ভার্সন ৬ অনেক বেশি পাওয়ারফুল এবং ফিচার সমৃদ্ব হওয়ার পরেও এর সাইজ ভার্সন ৫ এর প্রায় অর্ধেকেরও কম।&lt;/p&gt;

&lt;p&gt;ভার্সন ৫ঃ &lt;code&gt;২৮.৪ kb&lt;/code&gt;&lt;br&gt;&lt;br&gt;
ভার্সন ৬ঃ &lt;code&gt;১০.২ kb&lt;/code&gt; &lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
