<?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: Kushal jangra</title>
    <description>The latest articles on DEV Community by Kushal jangra (@kushal_jangra_1530f71f25c).</description>
    <link>https://dev.to/kushal_jangra_1530f71f25c</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%2F3351523%2Fd64c5715-cc5d-4ca5-9111-4ce93c9d80ba.png</url>
      <title>DEV Community: Kushal jangra</title>
      <link>https://dev.to/kushal_jangra_1530f71f25c</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kushal_jangra_1530f71f25c"/>
    <language>en</language>
    <item>
      <title>🚀 React.js UI Development: 8 Different Ways to Do the Same Thing</title>
      <dc:creator>Kushal jangra</dc:creator>
      <pubDate>Thu, 14 Aug 2025 17:24:34 +0000</pubDate>
      <link>https://dev.to/kushal_jangra_1530f71f25c/reactjs-ui-development-8-different-ways-to-do-the-same-thing-3o6j</link>
      <guid>https://dev.to/kushal_jangra_1530f71f25c/reactjs-ui-development-8-different-ways-to-do-the-same-thing-3o6j</guid>
      <description>&lt;p&gt;One of the coolest (and sometimes confusing) parts about React.js is that there’s never only one way to build something.&lt;br&gt;
From styling to data fetching to animations — React gives you multiple valid options for the same task.&lt;/p&gt;

&lt;p&gt;In this post, we’ll break down 8 common UI areas and show the different approaches developers can take.&lt;/p&gt;

&lt;p&gt;1️⃣ Styling Your Components&lt;/p&gt;

&lt;p&gt;React doesn’t force you into a single styling method — you have choices:&lt;/p&gt;

&lt;p&gt;Option  Example Pros    Cons&lt;br&gt;
Plain CSS   Import style.css    Simple, fast start  Risk of global name conflicts&lt;br&gt;
CSS Modules Button.module.css   Scoped styles per component Slightly verbose imports&lt;br&gt;
Inline Styles   &lt;/p&gt;  Dynamic per-element styling No media queries easily&lt;br&gt;
Styled Components   const Btn = styled.button   Scoped, theme-friendly  Runtime overhead&lt;br&gt;
TailwindCSS className="bg-blue-500 p-4" Utility-first, fast Class names can get long&lt;br&gt;
UI Libraries      Prebuilt &amp;amp; accessible   Limited custom look

&lt;p&gt;💡 Tip: For a design-heavy app, TailwindCSS or Shadcn UI works great. For quick MVPs, UI libraries like Chakra or MUI are faster.&lt;/p&gt;

&lt;p&gt;2️⃣ Managing State&lt;/p&gt;

&lt;p&gt;Different tools for managing component and global state:&lt;/p&gt;

&lt;p&gt;Option  Example Best For&lt;br&gt;
useState    const [count, setCount] = useState(0)   Local component state&lt;br&gt;
Context API AuthContext.Provider    Small global state&lt;br&gt;
Redux   useSelector(state =&amp;gt; state.user)    Large, complex apps&lt;br&gt;
Zustand const useStore = create()   Simple global state without boilerplate&lt;br&gt;
Recoil/Jotai    atom, useRecoilState    Fine-grained reactivity&lt;br&gt;
Local Storage   Sync with useEffect State persistence after refresh&lt;br&gt;
3️⃣ Writing Components&lt;/p&gt;

&lt;p&gt;You can structure components in various styles:&lt;/p&gt;

&lt;p&gt;Option  Example Notes&lt;br&gt;
Function Components function Header() {}    Modern standard with Hooks&lt;br&gt;
Class Components    class Header extends React.Component    Legacy, still supported&lt;br&gt;
Compound Components     Flexible APIs for UI widgets&lt;br&gt;
Render Props     }/&amp;gt;   Powerful but can be verbose&lt;br&gt;
HOCs    withAuth(Component) Wrap components with extra logic&lt;br&gt;
4️⃣ Routing Between Pages&lt;/p&gt;

&lt;p&gt;React doesn’t include routing by default, so you have options:&lt;/p&gt;

&lt;p&gt;React Router DOM → &lt;/p&gt;

&lt;p&gt;Next.js Routing → File-based routing&lt;/p&gt;

&lt;p&gt;TanStack Router → Type-safe routing&lt;/p&gt;

&lt;p&gt;Custom Routing → Your own conditional rendering logic&lt;/p&gt;

&lt;p&gt;5️⃣ Fetching Data&lt;/p&gt;

&lt;p&gt;Different libraries for API calls:&lt;/p&gt;

&lt;p&gt;Option  Example&lt;br&gt;
fetch API   fetch('/api')&lt;br&gt;
Axios   axios.get('/api')&lt;br&gt;
React Query useQuery(['user'], fetchUser)&lt;br&gt;
SWR useSWR('/api/user', fetcher)&lt;br&gt;
GraphQL Clients Apollo, Urql&lt;/p&gt;

&lt;p&gt;💡 Tip: For caching, background refetching, and retries, React Query or SWR is a game-changer.&lt;/p&gt;

&lt;p&gt;6️⃣ Handling Forms&lt;/p&gt;

&lt;p&gt;Forms are everywhere — here’s how you can manage them:&lt;/p&gt;

&lt;p&gt;Controlled Components → Store every input in state&lt;/p&gt;

&lt;p&gt;Uncontrolled Components → Use ref to read values&lt;/p&gt;

&lt;p&gt;React Hook Form → High performance, built-in validation&lt;/p&gt;

&lt;p&gt;Formik → Popular form management + Yup validation&lt;/p&gt;

&lt;p&gt;7️⃣ Adding Animations&lt;/p&gt;

&lt;p&gt;Make your UI feel alive:&lt;/p&gt;

&lt;p&gt;CSS Transitions → transition: all 0.3s ease;&lt;/p&gt;

&lt;p&gt;Framer Motion → &lt;/p&gt;

&lt;p&gt;React Spring → Physics-based animations&lt;/p&gt;

&lt;p&gt;GSAP → Complex timeline animations&lt;/p&gt;

&lt;p&gt;8️⃣ Using UI Component Libraries&lt;/p&gt;

&lt;p&gt;For quick and consistent UI, try:&lt;/p&gt;

&lt;p&gt;Material UI (MUI)&lt;/p&gt;

&lt;p&gt;Chakra UI&lt;/p&gt;

&lt;p&gt;Ant Design&lt;/p&gt;

&lt;p&gt;Mantine&lt;/p&gt;

&lt;p&gt;Shadcn UI (Radix + Tailwind)&lt;/p&gt;

&lt;p&gt;🏆 Takeaway&lt;/p&gt;

&lt;p&gt;React is unopinionated — it gives you the building blocks but doesn’t tell you exactly how to use them.&lt;br&gt;
That’s both freedom and responsibility for you as a developer.&lt;/p&gt;

&lt;p&gt;Rule of Thumb:&lt;/p&gt;

&lt;p&gt;Small project → Keep it simple&lt;/p&gt;

&lt;p&gt;Medium project → Use lightweight state &amp;amp; styling solutions&lt;/p&gt;

&lt;p&gt;Large project → Invest in scalable state management &amp;amp; UI patterns&lt;/p&gt;

&lt;p&gt;💬 Question for you:&lt;br&gt;
Which combo do you prefer for building UIs in React?&lt;br&gt;
Mine is → TailwindCSS + Zustand + React Query for most apps.&lt;/p&gt;

&lt;p&gt;If you found this helpful, follow me for more React + Frontend Development tips 🚀&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Day 13 strive sheet</title>
      <dc:creator>Kushal jangra</dc:creator>
      <pubDate>Fri, 25 Jul 2025 18:10:14 +0000</pubDate>
      <link>https://dev.to/kushal_jangra_1530f71f25c/day-13-strive-sheet-78j</link>
      <guid>https://dev.to/kushal_jangra_1530f71f25c/day-13-strive-sheet-78j</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvcjzojppvzqu88mpjrb8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvcjzojppvzqu88mpjrb8.png" alt=" " width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
    </item>
    <item>
      <title>Day 12 striver sheet</title>
      <dc:creator>Kushal jangra</dc:creator>
      <pubDate>Fri, 25 Jul 2025 18:08:58 +0000</pubDate>
      <link>https://dev.to/kushal_jangra_1530f71f25c/day-11-striver-sheet-55gd</link>
      <guid>https://dev.to/kushal_jangra_1530f71f25c/day-11-striver-sheet-55gd</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft5t0tnki7clc86s4dcce.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft5t0tnki7clc86s4dcce.png" alt=" " width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>100daysofcode</category>
      <category>productivity</category>
      <category>codenewbie</category>
      <category>devjournal</category>
    </item>
    <item>
      <title>Day -9 Striver SDE series</title>
      <dc:creator>Kushal jangra</dc:creator>
      <pubDate>Tue, 22 Jul 2025 18:07:59 +0000</pubDate>
      <link>https://dev.to/kushal_jangra_1530f71f25c/day-8-striver-sde-series-34l5</link>
      <guid>https://dev.to/kushal_jangra_1530f71f25c/day-8-striver-sde-series-34l5</guid>
      <description>&lt;p&gt;&lt;a href="https://takeuforward.org/interviews/strivers-sde-sheet-top-coding-interview-problems" rel="noopener noreferrer"&gt;Striver Sheet&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fllsqxnx4xzuy2npau3uj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fllsqxnx4xzuy2npau3uj.png" alt=" " width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>leetcode</category>
      <category>algorithms</category>
      <category>coding</category>
      <category>challenge</category>
    </item>
    <item>
      <title>React Progress till now..</title>
      <dc:creator>Kushal jangra</dc:creator>
      <pubDate>Sun, 13 Jul 2025 19:29:53 +0000</pubDate>
      <link>https://dev.to/kushal_jangra_1530f71f25c/react-progress-till-now-nb1</link>
      <guid>https://dev.to/kushal_jangra_1530f71f25c/react-progress-till-now-nb1</guid>
      <description>&lt;h2&gt;
  
  
  🧠 Following the React Course on Udemy
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.udemy.com/course/react-the-complete-guide-incl-redux/learn/lecture/39836984#overview" rel="noopener noreferrer"&gt;React - The Complete Guide (incl. Redux)&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;GitHub Profile:&lt;/strong&gt; &lt;a href="https://github.com/Kushal-jangra" rel="noopener noreferrer"&gt;Kushal Jangra&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've been diving deep into React through this course and building projects to solidify every major concept. Here's a look at what I've built so far 👇&lt;/p&gt;


&lt;h3&gt;
  
  
  🔹 React Concepts &amp;amp; Projects
&lt;/h3&gt;


&lt;h4&gt;
  
  
  1. Essentials – Components, JSX, Props, State
&lt;/h4&gt;

&lt;p&gt;📌 &lt;em&gt;Core building blocks of every React application.&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function Player({ name, symbol, isActive }) {
  return (
    &amp;lt;li className={isActive ? 'active' : ''}&amp;gt;
      {name} ({symbol})
    &amp;lt;/li&amp;gt;
  );
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;React is &lt;strong&gt;component-based&lt;/strong&gt;, meaning the UI is split into reusable pieces. JSX allows HTML to be written inside JavaScript, and props let components receive data. State enables interactivity.&lt;/p&gt;

&lt;h4&gt;
  
  
  📂 Project: Tic-Tac-Toe Game
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/Kushal-jangra/TIK-TAK-TOE-using-REACT" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://tik-tak-toe-using-react-tj26.vercel.app/" rel="noopener noreferrer"&gt;Live Demo&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧠 What I Learned:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Functional Components&lt;/li&gt;
&lt;li&gt;Conditional Rendering&lt;/li&gt;
&lt;li&gt;State Updates&lt;/li&gt;
&lt;li&gt;Lifting State Up&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Preview:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh929b5wa089gs90dyb0k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh929b5wa089gs90dyb0k.png" alt="Tic Tac Toe Preview" width="800" height="485"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h4&gt;
  
  
  2. Investment Calculator – Handling User Input &amp;amp; State
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/Kushal-jangra/React-Investment-Calculator" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://react-investment-calculator-sigma.vercel.app/" rel="noopener noreferrer"&gt;Live Demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧠 Concepts Used:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Two-way binding&lt;/li&gt;
&lt;li&gt;Controlled vs Uncontrolled Inputs&lt;/li&gt;
&lt;li&gt;Dynamic rendering of result tables
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const [enteredAmount, setEnteredAmount] = useState('');

&amp;lt;input 
  type="number" 
  value={enteredAmount}
  onChange={(event) =&amp;gt; setEnteredAmount(event.target.value)}
/&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Fun Fact:&lt;/strong&gt; React recalculates the entire virtual DOM on every render, but efficiently updates only what's changed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Preview:&lt;/strong&gt;  &lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1nz0rotrhgmm1ubtgvfh.png" alt=" " width="800" height="606"&gt;
&lt;/h2&gt;
&lt;h4&gt;
  
  
  3. React Styling – Tailwind CSS, CSS Modules, Styled Components
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/Kushal-jangra/React-Styling" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://react-styling-six.vercel.app/" rel="noopener noreferrer"&gt;Live Demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧠 Techniques Explored:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scoped styles with CSS Modules&lt;/li&gt;
&lt;li&gt;Utility-first approach with Tailwind&lt;/li&gt;
&lt;li&gt;Dynamic theming with Styled Components
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import styled from 'styled-components';

const Card = styled.div`
  padding: 1rem;
  background-color: #fff;
  border-radius: 10px;
  box-shadow: 0 0 10px rgba(0,0,0,0.1);
`;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;blockquote&gt;
&lt;p&gt;💡 Did you know? Styled Components uses tagged template literals to let you write actual CSS in your JavaScript.&lt;br&gt;
*&lt;em&gt;preview : *&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0uhfxnup70qyjdltebl5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0uhfxnup70qyjdltebl5.png" alt="Investment Calculator Preview" width="800" height="553"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h4&gt;
  
  
  4. Debugging React Apps
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Tools Used:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React Developer Tools for Chrome&lt;/li&gt;
&lt;li&gt;React Strict Mode&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🧠 What I learned:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Debugging helps detect unnecessary renders and side-effect errors early in dev mode.&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;React.StrictMode&amp;gt;
  &amp;lt;App /&amp;gt;
&amp;lt;/React.StrictMode&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h4&gt;
  
  
  5. Refs and Portals – Countdown App
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/Kushal-jangra/refs-portals-exercise-in-react" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://condown-game-react.vercel.app/" rel="noopener noreferrer"&gt;Live Demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧠 Concepts:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Refs to access and manipulate DOM nodes&lt;/li&gt;
&lt;li&gt;Portals to render components outside the root DOM tree&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Snippet - use Ref to Focus Input:&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;const inputRef = useRef();

useEffect(() =&amp;gt; {
  inputRef.current.focus();
}, []);

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Snippet – ReactDOM.createPortal:&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;return ReactDOM.createPortal(
  &amp;lt;ModalOverlay&amp;gt;{children}&amp;lt;/ModalOverlay&amp;gt;,
  document.getElementById('modal-root')
);

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;💡 Portals are great for modals, tooltips, and overlays.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;*&lt;em&gt;preview : *&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2y5i0xkjooc2pars10a9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2y5i0xkjooc2pars10a9.png" alt=" " width="800" height="539"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h4&gt;
  
  
  6. Project Management App – Working with Forms and CRUD
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/Kushal-jangra/Project-Manager-App" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://project-manager-app-vert.vercel.app/" rel="noopener noreferrer"&gt;Live Demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧠 Implemented:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nested components&lt;/li&gt;
&lt;li&gt;Task data handling&lt;/li&gt;
&lt;li&gt;Real-world app structure with form validation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Snippet – Handling Form Submission:&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;function handleSubmit(event) {
  event.preventDefault();
  onAddTask(taskData);
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;*&lt;em&gt;preview : *&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F97pkdmyyn1275x3ddm43.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F97pkdmyyn1275x3ddm43.png" alt=" " width="800" height="369"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h4&gt;
  
  
  7. Context API &amp;amp; useReducer – Shopping Cart
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/Kushal-jangra/Context-API-practice-project" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://shopping-cart-basic-project.vercel.app/" rel="noopener noreferrer"&gt;Live Demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧠 Key Concepts:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Avoided prop drilling using Context&lt;/li&gt;
&lt;li&gt;Used useReducer for complex state logic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Snippet – useReducer Setup:&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;const cartReducer = (state, action) =&amp;gt; {
  if (action.type === 'ADD_ITEM') {
    return { ...state, items: [...state.items, action.item] };
  }
  return state;
};

const [cartState, dispatchCartAction] = useReducer(cartReducer, initialCartState);

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;💡 &lt;code&gt;useReducer&lt;/code&gt; is especially useful when you have interdependent state variables or multi-step state transitions.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Preview:&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgjnxbl4djpzx564tm1uj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgjnxbl4djpzx564tm1uj.png" alt=" " width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h4&gt;
  
  
  8. Side Effects &amp;amp; &lt;code&gt;useEffect&lt;/code&gt; – Place Picker
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/Kushal-jangra/SideEffect-and-UseEffect-practice" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://place-picker-app-beryl.vercel.app/" rel="noopener noreferrer"&gt;Live Demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧠 Highlights:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Running code after component mount&lt;/li&gt;
&lt;li&gt;Managing cleanup functions&lt;/li&gt;
&lt;li&gt;Working with maps or external APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Snippet – useEffect:&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;useEffect(() =&amp;gt; {
  const storedPlaces = JSON.parse(localStorage.getItem('places'));
  setPlaces(storedPlaces || []);
}, []);

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Preview:&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fly7ril0ui4xr7ojskuta.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fly7ril0ui4xr7ojskuta.png" alt=" " width="800" height="499"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h4&gt;
  
  
  9. Quiz App – Personal Project
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/Kushal-jangra/Quiz-React-App" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://quiz-react-app-seven.vercel.app/" rel="noopener noreferrer"&gt;Live Demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧠 Skills Practiced:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Component-driven architecture&lt;/li&gt;
&lt;li&gt;Local state and score logic&lt;/li&gt;
&lt;li&gt;Dynamic rendering of questions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Snippet – Dynamic Rendering of Questions:&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;{questions.map((q, index) =&amp;gt; (
  &amp;lt;Question key={index} data={q} onAnswer={handleAnswer} /&amp;gt;
))}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Preview:&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzy9ed55s6k61dcdl5fr5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzy9ed55s6k61dcdl5fr5.png" alt=" " width="800" height="465"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h4&gt;
  
  
  10. React Behind the Scenes
&lt;/h4&gt;

&lt;p&gt;Explored:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reconciliation&lt;/li&gt;
&lt;li&gt;Virtual DOM diffing&lt;/li&gt;
&lt;li&gt;Component lifecycle&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 React uses a concept called the &lt;strong&gt;fiber architecture&lt;/strong&gt; for faster rendering and concurrency support.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h4&gt;
  
  
  11. Sending HTTP Requests – Backend-Connected Place Picker
&lt;/h4&gt;

&lt;p&gt;Updated Place Picker to connect with a basic backend using &lt;code&gt;fetch()&lt;/code&gt; to GET and POST data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧠 Topics:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Side effects + async/await&lt;/li&gt;
&lt;li&gt;JSON serialization&lt;/li&gt;
&lt;li&gt;Error handling with &lt;code&gt;.catch()&lt;/code&gt; and UI fallbacks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Snippet – Fetch with useEffect:&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;useEffect(() =&amp;gt; {
  async function fetchPlaces() {
    const response = await fetch('http://localhost:3000/places');
    const data = await response.json();
    setPlaces(data.places);
  }
  fetchPlaces();
}, []);

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
  </channel>
</rss>
