<?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: Sravanthi</title>
    <description>The latest articles on DEV Community by Sravanthi (@dev_sravanthi).</description>
    <link>https://dev.to/dev_sravanthi</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3997577%2F3c89fb0a-d571-491e-80ea-0a6643c3d722.png</url>
      <title>DEV Community: Sravanthi</title>
      <link>https://dev.to/dev_sravanthi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dev_sravanthi"/>
    <language>en</language>
    <item>
      <title>Event Handling in React</title>
      <dc:creator>Sravanthi</dc:creator>
      <pubDate>Fri, 17 Jul 2026 10:06:37 +0000</pubDate>
      <link>https://dev.to/dev_sravanthi/event-handling-in-react-43l4</link>
      <guid>https://dev.to/dev_sravanthi/event-handling-in-react-43l4</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;After learning about state, I started wondering how React responds when a user interacts with the application.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What happens when a button is clicked?&lt;/li&gt;
&lt;li&gt;How do we update state when a user types into an input field?&lt;/li&gt;
&lt;li&gt;How do we respond when a form is submitted?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The answer is &lt;strong&gt;event handling&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Event handling allows React components to respond to user actions such as clicks, keyboard input, form submissions, and mouse events.&lt;/p&gt;

&lt;p&gt;In this article, I'll explain how event handling works in React, how it differs from HTML events, and how it interacts with state.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is an Event?
&lt;/h2&gt;

&lt;p&gt;An event is an action performed by the user or the browser that React can respond to.&lt;/p&gt;

&lt;p&gt;Some common events include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clicking a button (click event)&lt;/li&gt;
&lt;li&gt;Typing in a text box (change event)&lt;/li&gt;
&lt;li&gt;Submitting a form (submit event)&lt;/li&gt;
&lt;li&gt;Moving the mouse (mouseOver event)&lt;/li&gt;
&lt;li&gt;Pressing a key (keyDown event)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;React uses JavaScript functions called &lt;strong&gt;event handlers&lt;/strong&gt; to respond to these events.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Event Handling?
&lt;/h2&gt;

&lt;p&gt;Event handling is the process of responding to user or browser events by executing JavaScript functions.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When a user clicks a button, run a function.&lt;/li&gt;
&lt;li&gt;When a user types, update state.&lt;/li&gt;
&lt;li&gt;When a form is submitted, prevent the page from refreshing and process the data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  onClick
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;onClick&lt;/code&gt; is triggered when the user clicks an element such as a button.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4pfskby980ponmq2bgoq.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4pfskby980ponmq2bgoq.png" alt="React onClick event example" width="589" height="306"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvu4jivobtf1lq8vyprk4.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvu4jivobtf1lq8vyprk4.png" alt="React onClick event example output" width="799" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the user clicks the button, React executes the function.&lt;/p&gt;

&lt;p&gt;If no arguments are needed, you can pass the function directly. Otherwise, use an arrow function.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Do We Use an Arrow Function?
&lt;/h2&gt;

&lt;p&gt;We use an arrow function when we need to pass arguments to an event handler. The arrow function delays calling the function until the button is clicked.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Happens If We Don't Use an Arrow Function?
&lt;/h2&gt;

&lt;p&gt;The function executes immediately when the component renders instead of waiting for the click event.&lt;/p&gt;

&lt;p&gt;This means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The alert appears as soon as the page loads.&lt;/li&gt;
&lt;li&gt;Clicking the button does nothing because the function has already been called.
This is not the desired behavior.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  onChange
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;onChange&lt;/code&gt; is triggered whenever the value of an input field changes. It is commonly used with textboxes, dropdowns, and checkboxes.&lt;/p&gt;

&lt;p&gt;It is commonly used together with &lt;code&gt;state&lt;/code&gt; to keep the UI synchronized with the user's input.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7lai9dkfl930ni53zoyc.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7lai9dkfl930ni53zoyc.png" alt="React onChange example" width="800" height="284"&gt;&lt;/a&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3l7dad7a9pltlgk5v5c9.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3l7dad7a9pltlgk5v5c9.png" alt="React onChange example output" width="800" height="119"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  onSubmit
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;onSubmit&lt;/code&gt; is triggered when a form is submitted. It is commonly used to process form data.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyyucc497gwjio9hnngcv.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyyucc497gwjio9hnngcv.png" alt="React onSubmit example" width="627" height="548"&gt;&lt;/a&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1dev33b50rtu4mom1nie.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1dev33b50rtu4mom1nie.png" alt="React onSubmit example output" width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What is preventDefault()?
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;preventDefault()&lt;/code&gt; method is commonly used with &lt;code&gt;onSubmit&lt;/code&gt; to stop the browser from refreshing the page, allowing React to process the form data without reloading the application.&lt;/p&gt;

&lt;p&gt;For a form, the default behavior is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Submit the form.&lt;/li&gt;
&lt;li&gt;Refresh the page.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;React applications usually don't want the page to refresh, so we use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;e.preventDefault();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This keeps the page open so React can handle the form submission.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Without preventDefault()&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;User clicks Submit
       ↓
Browser refreshes the page
       ↓
Data is lost
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;With preventDefault()&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;User clicks Submit
       ↓
React handles the form
       ↓
Page does NOT refresh
       ↓
Data is processed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Common Events
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Event&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;onClick&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Button click&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;onChange&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Input value changes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;onSubmit&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Form submitted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;onMouseOver&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mouse moves over an element&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;onKeyDown&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Keyboard key pressed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;onFocus&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Element receives focus&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;onBlur&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Element loses focus&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Event Object
&lt;/h2&gt;

&lt;p&gt;An &lt;strong&gt;event object&lt;/strong&gt; is an object that React automatically passes to an event handler whenever an event occurs (such as a click, typing in a textbox, or submitting a form).&lt;/p&gt;

&lt;p&gt;It contains information about the event and the element that triggered it, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which element triggered the event.&lt;/li&gt;
&lt;li&gt;The current value of an input.&lt;/li&gt;
&lt;li&gt;The type of event.&lt;/li&gt;
&lt;li&gt;Methods like preventDefault().&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;strong&gt;event object&lt;/strong&gt; is usually named &lt;strong&gt;e&lt;/strong&gt; or &lt;strong&gt;event&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Commonly Used Properties&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;e.target&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The element that triggered the event.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;e.target.value&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Gets the current value of an input field.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;e.type&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Returns the event type (e.g., click, change, submit).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;e.preventDefault()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Prevents the browser's default behavior, such as refreshing the page on form submission.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Event Handling in HTML vs React
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;HTML&lt;/th&gt;
&lt;th&gt;React&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Uses lowercase event names (&lt;code&gt;onclick&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;Uses camelCase (&lt;code&gt;onClick&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Uses strings&lt;/td&gt;
&lt;td&gt;Uses JavaScript functions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;onclick="save()"&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;onClick={save}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Rules of Event Handling
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use camelCase event names.&lt;/li&gt;
&lt;li&gt;Pass a function, not the result of a function.&lt;/li&gt;
&lt;li&gt;Use arrow functions when passing arguments.&lt;/li&gt;
&lt;li&gt;Update state using the setter function.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;preventDefault()&lt;/code&gt; for forms when needed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Event handling is what makes React applications interactive. By connecting user actions to JavaScript functions, React can respond to clicks, keyboard input, and form submissions.&lt;/p&gt;

&lt;p&gt;Combined with state, event handling allows React components to respond to user actions and automatically update the UI.&lt;/p&gt;

&lt;p&gt;As I continue learning React, I'm starting to see how state and event handling work together to build dynamic and interactive user interfaces.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Event handling allows React to respond to user actions such as clicking, typing, and submitting forms.&lt;/li&gt;
&lt;li&gt;React event names use camelCase, such as &lt;code&gt;onClick&lt;/code&gt;, &lt;code&gt;onChange&lt;/code&gt;, and &lt;code&gt;onSubmit&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Event handlers are passed as functions, not function calls.&lt;/li&gt;
&lt;li&gt;Use an arrow function when you need to pass arguments to an event handler.&lt;/li&gt;
&lt;li&gt;React automatically passes an event object (&lt;code&gt;e&lt;/code&gt;) to the event handler.&lt;/li&gt;
&lt;li&gt;The event object provides information about the event, such as the element that triggered it and its value.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;e.preventDefault()&lt;/code&gt; to stop the browser's default behavior, such as refreshing the page after a form submission.&lt;/li&gt;
&lt;li&gt;State is commonly updated inside event handlers using setter functions like &lt;code&gt;setState&lt;/code&gt; or &lt;code&gt;setCount&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Event handling makes React applications interactive and responsive to user input.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;Now that I know how to respond to user interactions, the next step is learning how to render lists of data in React using the &lt;code&gt;map()&lt;/code&gt; method.&lt;/p&gt;

&lt;p&gt;In the next article, I'll explore how to display collections of data efficiently and assign keys to list items.&lt;/p&gt;

&lt;p&gt;Thanks for reading, and happy coding!&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Understanding React State: How Components Remember and Update Data</title>
      <dc:creator>Sravanthi</dc:creator>
      <pubDate>Tue, 14 Jul 2026 22:49:34 +0000</pubDate>
      <link>https://dev.to/dev_sravanthi/understanding-react-state-how-components-remember-and-update-data-3i0e</link>
      <guid>https://dev.to/dev_sravanthi/understanding-react-state-how-components-remember-and-update-data-3i0e</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;After learning about props, I started wondering how React components keep track of information that changes over time.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A counter that increases when you click a button.&lt;/li&gt;
&lt;li&gt;A text box that updates as you type.&lt;/li&gt;
&lt;li&gt;A Like button that changes when it's clicked.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Props allow components to receive data, but they can't change that data.&lt;/p&gt;

&lt;p&gt;So how does React handle values that need to change?&lt;/p&gt;

&lt;p&gt;The answer is &lt;strong&gt;state&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In this article, I'll explain what state is, why React uses it, and how to update state using the &lt;code&gt;useState&lt;/code&gt; Hook.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is State?
&lt;/h2&gt;

&lt;p&gt;State is data managed by a React component that can change over time. Unlike props, state belongs to the component and can be updated. When state changes, React automatically re-renders the component and updates the UI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Do We Need State?
&lt;/h2&gt;

&lt;p&gt;JavaScript variables can change, but changing them does not tell React to update the UI. State solves this problem by notifying React whenever its value changes, causing the component to re-render.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Counter&lt;/li&gt;
&lt;li&gt;Login status&lt;/li&gt;
&lt;li&gt;Form input&lt;/li&gt;
&lt;li&gt;Shopping cart&lt;/li&gt;
&lt;li&gt;Theme (Dark/Light)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  useState
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;useState&lt;/code&gt; is a React Hook used to create and manage state in a functional component.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const [count, setCount] = useState(0);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;count&lt;/code&gt; → Current value&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;setCount()&lt;/code&gt; → Updates the value&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;0&lt;/code&gt; → Initial value&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whenever &lt;code&gt;setCount()&lt;/code&gt; is called, React updates the state and re-renders the component.&lt;/p&gt;

&lt;h2&gt;
  
  
  How React Updates the UI
&lt;/h2&gt;

&lt;p&gt;When a state value changes, React automatically re-renders the component.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The component renders with the initial state.&lt;/li&gt;
&lt;li&gt;The user performs an action, such as clicking a button.&lt;/li&gt;
&lt;li&gt;The setter function (for example, &lt;code&gt;setCount&lt;/code&gt;) updates the state.&lt;/li&gt;
&lt;li&gt;React re-renders the component.&lt;/li&gt;
&lt;li&gt;The updated state is displayed on the screen.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This automatic re-rendering is what makes React applications interactive.&lt;/p&gt;

&lt;h2&gt;
  
  
  Updating State
&lt;/h2&gt;

&lt;p&gt;To update state, React provides a setter function returned by &lt;code&gt;useState&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Example:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsm7a2aaz7cwm7q7umcld.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsm7a2aaz7cwm7q7umcld.png" alt="React count example app-jsx file" width="577" height="486"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F78og9hta0wx8bx8wo4tl.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F78og9hta0wx8bx8wo4tl.png" alt="React count example count-jsx file" width="606" height="532"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F82ey66x82chbeu8wdzjl.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F82ey66x82chbeu8wdzjl.png" alt="React count example output reset" width="796" height="98"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftyuph6lr3ddm51xzmqwe.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftyuph6lr3ddm51xzmqwe.png" alt="React count example output increment" width="800" height="100"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this example, the App component passes both &lt;code&gt;count&lt;/code&gt; and &lt;code&gt;setCount&lt;/code&gt; (named &lt;code&gt;counter&lt;/code&gt;) to the &lt;code&gt;Count&lt;/code&gt; component.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Whenever state changes, React re-renders the component.&lt;/p&gt;

&lt;p&gt;The initial state is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const [count, setCount] = useState(0);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;When the user clicks Increment:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;counter&lt;/code&gt; prop refers to the &lt;code&gt;setCount&lt;/code&gt; function passed from the parent, so calling:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;counter(count + 1);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;updates the state to the new value.&lt;/p&gt;

&lt;p&gt;In this example, the state is created in the App component using &lt;code&gt;useState&lt;/code&gt;. The current value (&lt;code&gt;count&lt;/code&gt;) and the setter function (&lt;code&gt;setCount&lt;/code&gt;) are passed to the Count component as props. When a button is clicked, the child component calls the setter function to update the parent's state. React then automatically re-renders the UI and displays the new count.&lt;/p&gt;

&lt;h2&gt;
  
  
  Multiple State Variables
&lt;/h2&gt;

&lt;p&gt;A component can have more than one state.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { useState } from "react";

function User() {

  const [name, setName] = useState("Srav");
  const [age, setAge] = useState(10);

  return (
    &amp;lt;&amp;gt;
      &amp;lt;h2&amp;gt;{name}&amp;lt;/h2&amp;gt;
      &amp;lt;h2&amp;gt;{age}&amp;lt;/h2&amp;gt;
    &amp;lt;/&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each call to &lt;code&gt;useState&lt;/code&gt; creates a separate piece of state, allowing a component to manage multiple values independently.&lt;/p&gt;

&lt;h2&gt;
  
  
  State vs Variables
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;State&lt;/th&gt;
&lt;th&gt;Variables&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Stored and managed by React&lt;/td&gt;
&lt;td&gt;Stored and managed by JavaScript&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Updating state causes the component to re-render&lt;/td&gt;
&lt;td&gt;Updating a variable does &lt;strong&gt;not&lt;/strong&gt; cause the component to re-render&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Created using &lt;code&gt;useState&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Created using &lt;code&gt;const&lt;/code&gt;, &lt;code&gt;let&lt;/code&gt;, or &lt;code&gt;var&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Persists between renders&lt;/td&gt;
&lt;td&gt;Recreated every time the component renders&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Used to store data that changes over time&lt;/td&gt;
&lt;td&gt;Used to store temporary values or calculations&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  State vs Props
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Props&lt;/th&gt;
&lt;th&gt;State&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Passed from a parent component&lt;/td&gt;
&lt;td&gt;Managed inside the component&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Read-only&lt;/td&gt;
&lt;td&gt;Can be updated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Used to pass data between components&lt;/td&gt;
&lt;td&gt;Used to store data that changes over time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Controlled by the parent component&lt;/td&gt;
&lt;td&gt;Controlled by the component itself&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Received through function parameters&lt;/td&gt;
&lt;td&gt;Created using &lt;code&gt;useState&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Can be passed to child components&lt;/td&gt;
&lt;td&gt;Can also be passed to child components as props&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Rules of State
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Always use the setter function returned by &lt;code&gt;useState&lt;/code&gt; (for example, &lt;code&gt;setCount&lt;/code&gt;) to update state.&lt;/li&gt;
&lt;li&gt;Don't modify state directly.&lt;/li&gt;
&lt;li&gt;State updates trigger a re-render.&lt;/li&gt;
&lt;li&gt;Each component manages its own state.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;State is one of the most important concepts in React because it allows components to remember information and update the user interface when that information changes.&lt;/p&gt;

&lt;p&gt;Unlike props, which receive data from a parent component, state belongs to the component itself. By combining props and state, React components become both reusable and interactive.&lt;/p&gt;

&lt;p&gt;As I continue learning React, I'm beginning to see that state is what makes React applications interactive. It allows the UI to respond to user actions and keeps the interface in sync with changing data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;State stores data inside a component.&lt;/li&gt;
&lt;li&gt;State can change over time.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;useState&lt;/code&gt; creates state in a functional component.&lt;/li&gt;
&lt;li&gt;Updating state causes React to re-render the component.&lt;/li&gt;
&lt;li&gt;State makes React applications interactive.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;After learning how components manage their own data with state, the next step is understanding events.&lt;/p&gt;

&lt;p&gt;In the next article, I'll explore event handling in React and learn how to respond to user actions such as button clicks, typing in input fields, and submitting forms.&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Understanding Props in React</title>
      <dc:creator>Sravanthi</dc:creator>
      <pubDate>Mon, 13 Jul 2026 22:18:18 +0000</pubDate>
      <link>https://dev.to/dev_sravanthi/understanding-props-in-react-635</link>
      <guid>https://dev.to/dev_sravanthi/understanding-props-in-react-635</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;After learning conditional rendering, I started wondering how React components share data with each other.&lt;/p&gt;

&lt;p&gt;For example, suppose I have a &lt;code&gt;Welcome&lt;/code&gt; component.&lt;/p&gt;

&lt;p&gt;Instead of hardcoding the same text every time, how can I display a different name for each user?&lt;/p&gt;

&lt;p&gt;The answer is &lt;strong&gt;props&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Props allow a parent component to pass data to a child component, making components more reusable and flexible.&lt;/p&gt;

&lt;p&gt;In this article, I'll explain what props are, how they work, and when to use them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are Props?
&lt;/h2&gt;

&lt;p&gt;Props is short for &lt;strong&gt;properties&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Props are used to pass data from a parent component to a child component.&lt;/p&gt;

&lt;p&gt;In React, data flows from a parent component to a child component through props.&lt;/p&gt;

&lt;p&gt;Think of props like function parameters.&lt;/p&gt;

&lt;p&gt;Just as a function accepts values as parameters, a React component accepts values through props.&lt;/p&gt;

&lt;h2&gt;
  
  
  Parent → Child Data Flow
&lt;/h2&gt;

&lt;p&gt;Props flow in one direction — from a parent component to a child component.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Parent sends data.&lt;/li&gt;
&lt;li&gt;Child receives and displays it.&lt;/li&gt;
&lt;li&gt;Child cannot change the props.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Parent Component
       │
       │ props
       ▼
Child Component
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Passing a Single Prop
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Parent Component&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;App&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Welcome&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Srav"&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Child Component&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Welcome&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Hello &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output&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;Hello Srav
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Passing Multiple Props
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Parent&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;App&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Welcome&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Srav"&lt;/span&gt;
      &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
      &lt;span class="na"&gt;city&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Auckland"&lt;/span&gt;
    &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Child&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Welcome&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;city&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output&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;Srav
10
Auckland
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Props are Read-only
&lt;/h2&gt;

&lt;p&gt;Props cannot be changed inside the child component. &lt;/p&gt;

&lt;p&gt;The parent owns the data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wrong&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Welcome&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Srav&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Correct&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The parent should pass a different value.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Welcome&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Srav"&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Destructuring Props
&lt;/h2&gt;

&lt;p&gt;Destructuring lets you access props directly without writing &lt;code&gt;props.&lt;/code&gt; every time.&lt;/p&gt;

&lt;p&gt;Instead of writing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Welcome&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use destructuring:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Welcome&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For multiple props:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Welcome&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;city&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;city&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Destructuring makes the code shorter, cleaner, and easier to read.&lt;/p&gt;

&lt;h2&gt;
  
  
  Props vs Variables
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Props&lt;/th&gt;
&lt;th&gt;Variables&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Passed from a parent component&lt;/td&gt;
&lt;td&gt;Declared inside the component or function&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Read-only (cannot be modified by the child component)&lt;/td&gt;
&lt;td&gt;Can be reassigned (if declared with &lt;code&gt;let&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Used to pass data between components&lt;/td&gt;
&lt;td&gt;Used to store temporary values during execution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Received as function parameters&lt;/td&gt;
&lt;td&gt;Created using &lt;code&gt;const&lt;/code&gt;, &lt;code&gt;let&lt;/code&gt;, or &lt;code&gt;var&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Changes when the parent passes new values&lt;/td&gt;
&lt;td&gt;Exist only within the scope where they are declared&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Welcome&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;country&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;New Zealand&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;country&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;name&lt;/strong&gt; → comes from the parent as a &lt;code&gt;prop&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;country&lt;/strong&gt; → is a local &lt;code&gt;variable&lt;/code&gt; created inside the component.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Props vs State
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Props&lt;/th&gt;
&lt;th&gt;State&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Passed from a parent component&lt;/td&gt;
&lt;td&gt;Managed inside the component&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Read-only&lt;/td&gt;
&lt;td&gt;Can be updated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Used to pass data&lt;/td&gt;
&lt;td&gt;Used to store changing data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Received through function parameters&lt;/td&gt;
&lt;td&gt;Created using &lt;code&gt;useState&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;We'll explore state in the next article.&lt;/p&gt;

&lt;h2&gt;
  
  
  When should you use Props?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Passing data to child components&lt;/li&gt;
&lt;li&gt;Making components reusable&lt;/li&gt;
&lt;li&gt;Customizing UI&lt;/li&gt;
&lt;li&gt;Sharing information between components&lt;/li&gt;
&lt;li&gt;Passing event handler functions to child components&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Props are one of the fundamental concepts in React because they allow components to communicate with each other.&lt;/p&gt;

&lt;p&gt;They make components more reusable by allowing the same component to display different data without changing its internal code.&lt;/p&gt;

&lt;p&gt;Understanding how props work is an important step toward building modular and maintainable React applications.&lt;/p&gt;

&lt;p&gt;As I continue learning React, I'm seeing how breaking an application into smaller components and passing data through props makes the code much easier to understand and reuse.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Props are used to pass data from a parent component to a child component.&lt;/li&gt;
&lt;li&gt;Props are read-only and should not be modified by the child component.&lt;/li&gt;
&lt;li&gt;Components become more reusable by receiving different props.&lt;/li&gt;
&lt;li&gt;Props can contain strings, numbers, booleans, objects, arrays, functions, or even JSX.&lt;/li&gt;
&lt;li&gt;Props help components communicate while keeping responsibilities separate.&lt;/li&gt;
&lt;li&gt;Props can be destructured to make the code cleaner.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;Now that I understand how components receive data through props, the next step is learning how components manage their own changing data using state.&lt;/p&gt;

&lt;p&gt;In the next article, I'll explore React state and learn how it allows components to update the UI when data changes.&lt;/p&gt;

&lt;p&gt;Thanks for reading, and happy coding!&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Understanding Conditional Rendering in React: 5 Common Techniques</title>
      <dc:creator>Sravanthi</dc:creator>
      <pubDate>Mon, 13 Jul 2026 04:37:28 +0000</pubDate>
      <link>https://dev.to/dev_sravanthi/understanding-conditional-rendering-in-react-5-common-techniques-41bl</link>
      <guid>https://dev.to/dev_sravanthi/understanding-conditional-rendering-in-react-5-common-techniques-41bl</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;After learning JSX, I started wondering how React decides what to display on the screen.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Show &lt;strong&gt;"Welcome"&lt;/strong&gt; only after a user logs in.&lt;/li&gt;
&lt;li&gt;Display a &lt;strong&gt;Loading...&lt;/strong&gt; message while data is being fetched.&lt;/li&gt;
&lt;li&gt;Show &lt;strong&gt;"No Data Found"&lt;/strong&gt; when a list is empty.&lt;/li&gt;
&lt;li&gt;Display an &lt;strong&gt;Admin Dashboard&lt;/strong&gt; only for administrators.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The answer is &lt;strong&gt;conditional rendering&lt;/strong&gt; in React.&lt;/p&gt;

&lt;p&gt;Conditional rendering allows React to display different UI based on a condition.&lt;/p&gt;

&lt;p&gt;In this article, I'll explore the five common ways of conditional rendering and learn when to use each one.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Conditional Rendering?
&lt;/h2&gt;

&lt;p&gt;Conditional rendering simply means displaying different content depending on whether a condition is true or false.&lt;/p&gt;

&lt;p&gt;Think about a login page.&lt;/p&gt;

&lt;p&gt;If the user is logged in, we display:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Welcome
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Otherwise we display:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Please Login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are several ways. The most common are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;if...else&lt;/li&gt;
&lt;li&gt;Element Variables&lt;/li&gt;
&lt;li&gt;Ternary Conditional Operator&lt;/li&gt;
&lt;li&gt;Short Circuit Operator&lt;/li&gt;
&lt;li&gt;Early Return&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Common Ways of Conditional Rendering
&lt;/h2&gt;

&lt;p&gt;React provides several ways to render different UI based on conditions. Each approach has its own use case.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;th&gt;Example use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;if...else&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Executes one block of code if the condition is true, otherwise executes another block.&lt;/td&gt;
&lt;td&gt;Complex business logic, multiple conditions.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ternary Operator (&lt;code&gt;? :&lt;/code&gt;)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Chooses between two values or UI elements based on a condition.&lt;/td&gt;
&lt;td&gt;Login/Logout, Active/Inactive.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Logical AND (&lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt;)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Renders content only when a condition is true.&lt;/td&gt;
&lt;td&gt;Admin buttons, notifications, badges.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Element Variable&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Stores JSX in a variable and renders that variable later.&lt;/td&gt;
&lt;td&gt;Cleaner JSX, reusable UI blocks.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Early Return&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Returns immediately from the component if a condition is met.&lt;/td&gt;
&lt;td&gt;Loading screens, error pages, authentication.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  if...else
&lt;/h2&gt;

&lt;p&gt;Used when you want to decide what to show before displaying the page. It checks a condition and returns different JSX depending on whether the condition is true or false.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4d9knetq78tt0uuhjwss.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4d9knetq78tt0uuhjwss.png" alt="React using if else condition" width="532" height="272"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqkvskq6hsh265gnhwqv8.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqkvskq6hsh265gnhwqv8.png" alt="React using if else condition output" width="799" height="136"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;if...else statements can't be written directly inside JSX because they are JavaScript statements, not expressions. Instead, place the if...else logic before the return statement and return the appropriate JSX.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rule to remember&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Expressions can go inside {} in JSX.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Variables&lt;/li&gt;
&lt;li&gt;Function calls&lt;/li&gt;
&lt;li&gt;Arithmetic (2 + 3)&lt;/li&gt;
&lt;li&gt;Ternary (condition ? A : B)&lt;/li&gt;
&lt;li&gt;Logical AND (condition &amp;amp;&amp;amp; )&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Statements cannot go inside JSX.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;if...else&lt;/li&gt;
&lt;li&gt;for&lt;/li&gt;
&lt;li&gt;while&lt;/li&gt;
&lt;li&gt;switch&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Element variables
&lt;/h2&gt;

&lt;p&gt;A cleaner alternative to returning JSX directly from an if...else block is to use element variables. An element variable is simply a JavaScript variable that stores JSX, making the return statement easier to read.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example 1:&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 message = &amp;lt;h1&amp;gt;Hello!&amp;lt;/h1&amp;gt;;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here,&lt;br&gt;
&lt;code&gt;message&lt;/code&gt; is a JavaScript variable.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;h1&amp;gt;Hello!&amp;lt;/h1&amp;gt;&lt;/code&gt; is a JSX element stored in that variable.&lt;br&gt;
Later, you can render it like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;return (
  &amp;lt;div&amp;gt;
    {message}
  &amp;lt;/div&amp;gt;
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Example 2:&lt;/strong&gt; Render only part of a component&lt;/p&gt;

&lt;p&gt;Suppose you always want to show the heading.&lt;/p&gt;

&lt;p&gt;But only logged-in users should see a button.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function App() {

  const isLoggedIn = true;

  let button;

  if (isLoggedIn) {
    button = &amp;lt;button&amp;gt;Logout&amp;lt;/button&amp;gt;;
  } else {
    button = &amp;lt;button&amp;gt;Login&amp;lt;/button&amp;gt;;
  }

  return (
    &amp;lt;div&amp;gt;
      &amp;lt;h1&amp;gt;React Tutorial&amp;lt;/h1&amp;gt;
      {button}
    &amp;lt;/div&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If &lt;code&gt;isLoggedIn = true&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;React Tutorial

[Logout]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If &lt;code&gt;isLoggedIn = false&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;React Tutorial

[Login]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice that only the button changes, while the rest of the component stays the same.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example 3:&lt;/strong&gt; Render nothing&lt;/p&gt;

&lt;p&gt;Sometimes you don't want to display anything.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function App() {

  const showMessage = false;

  let message;

  if (showMessage) {
    message = &amp;lt;h2&amp;gt;Welcome!&amp;lt;/h2&amp;gt;;
  }

  return (
    &amp;lt;div&amp;gt;
      &amp;lt;h1&amp;gt;Home Page&amp;lt;/h1&amp;gt;
      {message}
    &amp;lt;/div&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Since &lt;code&gt;showMessage&lt;/code&gt; is false,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;message = undefined;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;React ignores &lt;code&gt;undefined&lt;/code&gt;, so nothing is rendered.&lt;/p&gt;

&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Home Page

No welcome message is shown.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When should you use element variables?&lt;/p&gt;

&lt;p&gt;Use element variables when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You have multiple lines of JSX to conditionally render.&lt;/li&gt;
&lt;li&gt;The condition is too complex for a simple ternary operator.&lt;/li&gt;
&lt;li&gt;You want to keep the return statement clean and readable.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Ternary Conditional Operator
&lt;/h2&gt;

&lt;p&gt;The main advantage of the ternary operator is that it can be used directly inside JSX.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why is it useful in React?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;JSX only allows expressions, not statements. The ternary operator is an expression, so JSX accepts it. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why can the ternary operator be used inside JSX?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because it returns a value.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When should you use a ternary operator?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use it when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You have two possible outcomes (true/false).&lt;/li&gt;
&lt;li&gt;The JSX is small and simple.&lt;/li&gt;
&lt;li&gt;You want to keep the code concise.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For larger or more complex conditions, using an if...else statement with an element variable (before the return) is often easier to read.&lt;/p&gt;

&lt;p&gt;Quick comparison&lt;br&gt;
| if...else | Ternary (&lt;code&gt;? :&lt;/code&gt;) |&lt;br&gt;
|-----------|-----------------|&lt;br&gt;
| A statement | An expression |&lt;br&gt;
| Cannot be written directly inside JSX | Can be written inside JSX |&lt;br&gt;
| Better for complex logic | Better for simple true/false rendering |&lt;br&gt;
| Usually written before &lt;code&gt;return&lt;/code&gt; | Written inside &lt;code&gt;{}&lt;/code&gt; |&lt;/p&gt;

&lt;h2&gt;
  
  
  Short Circuit Operator
&lt;/h2&gt;

&lt;p&gt;The short-circuit operator is another way to conditionally render content. It is useful when you want to display something only if a condition is true.&lt;/p&gt;

&lt;p&gt;In React, the short-circuit operator uses the JavaScript logical AND (&amp;amp;&amp;amp;) operator.&lt;/p&gt;

&lt;p&gt;Syntax:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;condition &amp;amp;&amp;amp; expression&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;It means:&lt;/p&gt;

&lt;p&gt;If the condition is true, render the expression. If the condition is false, render nothing.&lt;/p&gt;

&lt;p&gt;Example:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foq2q3ch2ifjerf3ughzb.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foq2q3ch2ifjerf3ughzb.png" alt="React short circuit example when true" width="471" height="259"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx3odiimumc7y8cw5uxn6.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx3odiimumc7y8cw5uxn6.png" alt="React short circuit example when true output" width="800" height="117"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv0l7y4jdln06w512teit.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv0l7y4jdln06w512teit.png" alt="React short circuit example when false" width="610" height="281"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpqcgwji6kk9fsv5d2t52.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpqcgwji6kk9fsv5d2t52.png" alt="React short circuit example when false output" width="798" height="109"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the condition is &lt;code&gt;false&lt;/code&gt;, React doesn't render the JSX on the right side of &lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Early Return
&lt;/h2&gt;

&lt;p&gt;Returns JSX immediately when a condition is met, so the rest of the component doesn't execute. It helps keep the code simple and easy to read.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F22frzw9ticasj939phi5.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F22frzw9ticasj939phi5.png" alt="React early return true example" width="627" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When isLoading is true, React immediately returns:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxrjtpfvuysy96bdghqhf.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxrjtpfvuysy96bdghqhf.png" alt="React early return true example output" width="800" height="111"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fta5lfjdbg3rnsckvxb4f.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fta5lfjdbg3rnsckvxb4f.png" alt="React early return false example" width="465" height="344"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcv6wm2rz04ya8ihcu49w.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcv6wm2rz04ya8ihcu49w.png" alt="React early return false example output" width="800" height="111"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It doesn't continue to the rest of the component. Once the loading is complete (isLoading = false), React skips the if statement and renders the main page.&lt;br&gt;
This is a very common pattern in React applications when waiting for data from an API.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which One Should You Use?
&lt;/h2&gt;

&lt;p&gt;There isn't a single "best" method.&lt;/p&gt;

&lt;p&gt;Choose the one that makes your code easiest to understand.&lt;/p&gt;

&lt;p&gt;As a general guideline:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use if...else for complex logic.&lt;/li&gt;
&lt;li&gt;Use element variables to keep JSX clean.&lt;/li&gt;
&lt;li&gt;Use the ternary operator when choosing between two values.&lt;/li&gt;
&lt;li&gt;Use &amp;amp;&amp;amp; when displaying something only if a condition is true.&lt;/li&gt;
&lt;li&gt;Use early return for loading, error, or authentication screens.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Conditional rendering is one of the core concepts of React.&lt;/p&gt;

&lt;p&gt;Although there are several ways to achieve it, each method has its own purpose.&lt;/p&gt;

&lt;p&gt;Choosing the right approach makes your components easier to read, maintain, and understand.&lt;/p&gt;

&lt;p&gt;Understanding when to use each technique will help you write cleaner and more readable React components.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Conditional rendering displays different UI based on conditions.&lt;/li&gt;
&lt;li&gt;React uses normal JavaScript for conditional rendering.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;if...else&lt;/code&gt; is best for complex logic.&lt;/li&gt;
&lt;li&gt;Element variables help keep JSX clean and readable.&lt;/li&gt;
&lt;li&gt;The ternary operator is ideal for choosing between two values.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt; displays content only when a condition is true.&lt;/li&gt;
&lt;li&gt;Early return is useful for loading, error, and authentication screens.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;Now that I know how to display different content based on conditions, the next step is understanding how data flows between React components using &lt;strong&gt;props&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In the next article, I'll explore what props are, why they're useful, and how they help components communicate with each other.&lt;/p&gt;

&lt;p&gt;Thanks for reading, and happy coding!&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Understanding JSX in React: Why Does HTML Work Inside JavaScript?</title>
      <dc:creator>Sravanthi</dc:creator>
      <pubDate>Mon, 13 Jul 2026 00:17:22 +0000</pubDate>
      <link>https://dev.to/dev_sravanthi/understanding-jsx-in-react-why-does-html-work-inside-javascript-3c92</link>
      <guid>https://dev.to/dev_sravanthi/understanding-jsx-in-react-why-does-html-work-inside-javascript-3c92</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In my previous article, I explored the React project structure and understood the purpose of the files that Vite created.&lt;/p&gt;

&lt;p&gt;The next question I had was:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How does React actually display HTML inside JavaScript?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When I opened &lt;code&gt;App.jsx&lt;/code&gt;, I noticed something unusual. HTML tags were written directly inside a JavaScript file.&lt;/p&gt;

&lt;p&gt;That looked strange at first because JavaScript doesn't normally allow HTML.&lt;/p&gt;

&lt;p&gt;So I started digging deeper and discovered JSX.&lt;/p&gt;

&lt;p&gt;In this article, I'll explain what JSX is, why React uses it, and how it makes building user interfaces easier.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is JSX?
&lt;/h2&gt;

&lt;p&gt;JSX (JavaScript XML) is a syntax extension for JavaScript that lets you write HTML-like code inside JavaScript.&lt;/p&gt;

&lt;p&gt;Instead of writing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;React.createElement("h1", null, "Hello")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Thankfully, we don't usually write &lt;code&gt;React.createElement()&lt;/code&gt; ourselves. JSX lets us write much cleaner code.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can write:&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;h1&amp;gt;Hello&amp;lt;/h1&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;JSX isn't HTML. It only looks like HTML. Behind the scenes, React converts it into JavaScript.&lt;/p&gt;

&lt;p&gt;React doesn't understand JSX directly.&lt;/p&gt;

&lt;p&gt;When the application is built, Vite transforms JSX into regular JavaScript that browsers can understand.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffiiyhzn7h0subkowmk0i.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffiiyhzn7h0subkowmk0i.png" alt="React return jsx example" width="370" height="152"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frt0cf4sjgfmsyjmj8xdn.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frt0cf4sjgfmsyjmj8xdn.png" alt="React return jsx example output" width="799" height="130"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do we use JSX?
&lt;/h2&gt;

&lt;p&gt;Without JSX, creating user interfaces becomes more difficult to read and write.&lt;/p&gt;

&lt;p&gt;Benefits of JSX:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Easier to read and write&lt;/li&gt;
&lt;li&gt;Looks similar to HTML&lt;/li&gt;
&lt;li&gt;Makes UI code easier to maintain&lt;/li&gt;
&lt;li&gt;Allows JavaScript expressions inside the UI&lt;/li&gt;
&lt;li&gt;Helps build reusable React components&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  JSX vs HTML
&lt;/h2&gt;

&lt;p&gt;JSX looks like HTML, but there are some differences.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;HTML&lt;/th&gt;
&lt;th&gt;JSX&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;class&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;className&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;for&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;htmlFor&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Uses lowercase attribute names&lt;/td&gt;
&lt;td&gt;Most attributes use camelCase (for example, &lt;code&gt;onClick&lt;/code&gt;, &lt;code&gt;tabIndex&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JavaScript cannot be written directly inside HTML&lt;/td&gt;
&lt;td&gt;JavaScript expressions can be written inside &lt;code&gt;{}&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Some tags don't need to be closed&lt;/td&gt;
&lt;td&gt;Every tag must be closed (for example, &lt;code&gt;&amp;lt;img /&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;input /&amp;gt;&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These differences exist because JSX is JavaScript, not HTML.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HTML&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;label for="name"&amp;gt;Name&amp;lt;/label&amp;gt;
&amp;lt;input class="textbox"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;JSX&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;label htmlFor="name"&amp;gt;Name&amp;lt;/label&amp;gt;
&amp;lt;input className="textbox" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because &lt;code&gt;class&lt;/code&gt; and &lt;code&gt;for&lt;/code&gt; are reserved keywords in JavaScript.&lt;/p&gt;

&lt;h2&gt;
  
  
  JavaScript Expressions inside JSX
&lt;/h2&gt;

&lt;p&gt;Inside JSX you can execute JavaScript using curly braces &lt;code&gt;{}&lt;/code&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F14j5r2z1kjpi4110lvav.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F14j5r2z1kjpi4110lvav.png" alt="React example with curly braces" width="528" height="222"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpsi3iicjaa5m4jq7d8tf.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpsi3iicjaa5m4jq7d8tf.png" alt="React example with curly braces output" width="800" height="116"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Curly Braces {}
&lt;/h2&gt;

&lt;p&gt;Curly braces tell React:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Everything inside the curly braces is treated as a JavaScript expression.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const age = 25;

return &amp;lt;h2&amp;gt;Age: {age}&amp;lt;/h2&amp;gt;;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inside &lt;code&gt;{}&lt;/code&gt;, you can use:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Variables&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;{name}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Math&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;{5 + 8}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Functions&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;{sayHello()}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Objects&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;{user.name}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Ternary operators&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;{isLoggedIn ? "Welcome" : "Login"}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Rules of JSX
&lt;/h2&gt;

&lt;p&gt;Although JSX looks similar to HTML, it follows a few rules that are different from standard HTML.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rule 1:&lt;/strong&gt; Return one parent element&lt;/p&gt;

&lt;p&gt;Wrong&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
return (
  &amp;lt;h1&amp;gt;Hello&amp;lt;/h1&amp;gt;
  &amp;lt;p&amp;gt;React&amp;lt;/p&amp;gt;
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Correct&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;return (
  &amp;lt;div&amp;gt;
    &amp;lt;h1&amp;gt;Hello&amp;lt;/h1&amp;gt;
    &amp;lt;p&amp;gt;React&amp;lt;/p&amp;gt;
  &amp;lt;/div&amp;gt;
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or use a Fragment.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;return (
  &amp;lt;&amp;gt;
    &amp;lt;h1&amp;gt;Hello&amp;lt;/h1&amp;gt;
    &amp;lt;p&amp;gt;React&amp;lt;/p&amp;gt;
  &amp;lt;/&amp;gt;
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Rule 2:&lt;/strong&gt; Close every tag&lt;/p&gt;

&lt;p&gt;Wrong&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;img src="logo.png"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Correct&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;img src="logo.png" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Rule 3:&lt;/strong&gt; Use camelCase&lt;/p&gt;

&lt;p&gt;Wrong&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;button onclick="save()"&amp;gt;Save&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Correct&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;button onClick={save}&amp;gt;Save&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Rule 4:&lt;/strong&gt; Use &lt;code&gt;className&lt;/code&gt; instead of &lt;code&gt;class&lt;/code&gt; because &lt;code&gt;class&lt;/code&gt; is a reserved JavaScript keyword.&lt;/p&gt;

&lt;p&gt;Wrong&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;div class="box"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Correct&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;div className="box"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Rule 5:&lt;/strong&gt; Use curly braces &lt;code&gt;{}&lt;/code&gt; to write JavaScript expressions.&lt;/p&gt;

&lt;p&gt;Wrong&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;h1&amp;gt;name&amp;lt;/h1&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Correct&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;h1&amp;gt;{name}&amp;lt;/h1&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;After learning more about JSX, I realized that JSX is simply a cleaner and more readable way to build user interfaces in React.&lt;/p&gt;

&lt;p&gt;Although it looks like HTML, it is actually converted into JavaScript before the browser runs it.&lt;/p&gt;

&lt;p&gt;Understanding JSX has given me a much better idea of how React components are built.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;JSX lets us write HTML-like code inside JavaScript.&lt;/li&gt;
&lt;li&gt;React converts JSX into JavaScript during the build process.&lt;/li&gt;
&lt;li&gt;JSX makes React components easier to read and maintain.&lt;/li&gt;
&lt;li&gt;JavaScript expressions can be written inside &lt;code&gt;{}&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;JSX has a few rules, such as using &lt;code&gt;className&lt;/code&gt;, &lt;code&gt;htmlFor&lt;/code&gt;, and closing every tag.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;Now that I understand what JSX is and how it works, the next step is learning how to display different content based on conditions.&lt;/p&gt;

&lt;p&gt;In the next article, I'll explore the four ways of conditional rendering in React and learn when to use each approach.&lt;/p&gt;

&lt;p&gt;Thanks for reading, and happy coding!&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Understanding the React Project Structure: What Did Vite Create for Me?</title>
      <dc:creator>Sravanthi</dc:creator>
      <pubDate>Thu, 09 Jul 2026 01:05:01 +0000</pubDate>
      <link>https://dev.to/dev_sravanthi/understanding-the-react-project-structure-what-did-vite-create-for-me-31np</link>
      <guid>https://dev.to/dev_sravanthi/understanding-the-react-project-structure-what-did-vite-create-for-me-31np</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In my previous article, I learned how to create a React project using Vite and understood what each setup command does.&lt;/p&gt;

&lt;p&gt;After opening the project in Visual Studio Code, I noticed that Vite had created several files and folders for me.&lt;/p&gt;

&lt;p&gt;At first, I wasn't sure what most of them were used for.&lt;/p&gt;

&lt;p&gt;Questions like these came to mind:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why do I have both a &lt;code&gt;src&lt;/code&gt; folder and a &lt;code&gt;public&lt;/code&gt; folder?&lt;/li&gt;
&lt;li&gt;What is &lt;code&gt;package.json&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;Why are there two &lt;code&gt;CSS&lt;/code&gt; files?&lt;/li&gt;
&lt;li&gt;What is &lt;code&gt;vite.config.js&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;Which files will I actually work with every day?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of ignoring them, I decided to understand what each one does.&lt;/p&gt;

&lt;p&gt;In this article, I'll walk through the React project structure and explain the purpose of the most important files and folders.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiauchzy14fnizzciij4a.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiauchzy14fnizzciij4a.png" alt="React project structure created by Vite in Visual Studio Code" width="186" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Looking at the Project Structure
&lt;/h2&gt;

&lt;p&gt;When I first looked at the project, I saw folders and files like these:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;node_modules&lt;/li&gt;
&lt;li&gt;public&lt;/li&gt;
&lt;li&gt;src&lt;/li&gt;
&lt;li&gt;package.json&lt;/li&gt;
&lt;li&gt;index.html&lt;/li&gt;
&lt;li&gt;vite.config.js&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It looked a little overwhelming at first.&lt;/p&gt;

&lt;p&gt;The good news is that we don't need to understand everything immediately.&lt;/p&gt;

&lt;p&gt;As beginners, we mainly work with just a few of these files every day.&lt;/p&gt;

&lt;h2&gt;
  
  
  node_modules
&lt;/h2&gt;

&lt;p&gt;I remembered that this folder was created after running &lt;code&gt;npm install&lt;/code&gt; in my previous article.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;node_modules&lt;/code&gt; folder stores all the installed packages and dependencies required for the React application to run.&lt;/p&gt;

&lt;p&gt;Although it's an important folder, developers usually don't edit anything inside it manually.&lt;/p&gt;

&lt;h2&gt;
  
  
  public
&lt;/h2&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frsixlmcm0s5837nqlcqz.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frsixlmcm0s5837nqlcqz.png" alt="React inside public folder" width="282" height="137"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I expanded the &lt;code&gt;public&lt;/code&gt; folder, I found files like &lt;code&gt;favicon.svg&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;public&lt;/code&gt; folder is used to store static files such as images, icons, and other assets.&lt;/p&gt;

&lt;p&gt;If a file is placed inside the &lt;code&gt;public&lt;/code&gt; folder, it can be accessed directly without importing it into your React components. &lt;/p&gt;

&lt;h2&gt;
  
  
  The &lt;code&gt;src&lt;/code&gt; Folder
&lt;/h2&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4i31n41dnnjh2whii57n.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4i31n41dnnjh2whii57n.png" alt="React inside src folder" width="292" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The name &lt;code&gt;src&lt;/code&gt; stands for &lt;strong&gt;source&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is the main folder where we write most of our React application.&lt;/p&gt;

&lt;p&gt;Inside this folder, Vite created several files for us:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;App.jsx&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;App.css&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;main.jsx&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;index.css&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;assets&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As I continue learning React, this is the folder I'll spend most of my time working in. &lt;/p&gt;

&lt;p&gt;Let's take a look at each file.&lt;/p&gt;

&lt;h2&gt;
  
  
  App.jsx
&lt;/h2&gt;

&lt;p&gt;After opening &lt;code&gt;App.jsx&lt;/code&gt;, I realized that it contains the main React component that is displayed in the browser.&lt;/p&gt;

&lt;p&gt;Whenever I modify this file and save it, I can immediately see the changes reflected in my browser.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuo3noqexlcomoyq3piiq.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuo3noqexlcomoyq3piiq.png" alt="React modifying in app_jsx file" width="800" height="303"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiu9o5vrgo5j5ya9a1vzz.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiu9o5vrgo5j5ya9a1vzz.png" alt="React after running app_jsx file how it reflects in browser" width="800" height="252"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is one of the files I'll be working with the most while learning React.&lt;/p&gt;

&lt;h2&gt;
  
  
  App.css
&lt;/h2&gt;

&lt;p&gt;This file contains styles specifically for the &lt;code&gt;App.jsx&lt;/code&gt; component.&lt;/p&gt;

&lt;p&gt;When I change the CSS here, the appearance of my application changes.&lt;/p&gt;

&lt;p&gt;Later, when I create more components, each component can also have its own CSS file.&lt;/p&gt;

&lt;h2&gt;
  
  
  index.css
&lt;/h2&gt;

&lt;p&gt;At first, I wondered why there were two CSS files.&lt;/p&gt;

&lt;p&gt;Unlike &lt;code&gt;App.css&lt;/code&gt;, the &lt;code&gt;index.css&lt;/code&gt; file contains styles that apply to the entire application.&lt;/p&gt;

&lt;p&gt;This is a good place for global styles such as fonts, margins, and background colours.&lt;/p&gt;

&lt;h2&gt;
  
  
  main.jsx
&lt;/h2&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmwgo66ftf9up4vu606xy.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmwgo66ftf9up4vu606xy.png" alt="React inside main_jsx file" width="799" height="260"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;main.jsx&lt;/code&gt; file is the entry point of the React application.&lt;/p&gt;

&lt;p&gt;Think of it as the starting point.&lt;/p&gt;

&lt;p&gt;It loads the App component and displays it inside the browser.&lt;/p&gt;

&lt;p&gt;Whenever the application starts, React begins its journey from this file.&lt;/p&gt;

&lt;h2&gt;
  
  
  assets
&lt;/h2&gt;

&lt;p&gt;In React, assets are static files used by your application, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Images (.png, .jpg, .svg, .gif, .webp)&lt;/li&gt;
&lt;li&gt;Icons&lt;/li&gt;
&lt;li&gt;Fonts (.ttf, .woff, .woff2)&lt;/li&gt;
&lt;li&gt;Videos (.mp4)&lt;/li&gt;
&lt;li&gt;Audio (.mp3)&lt;/li&gt;
&lt;li&gt;JSON files (sometimes)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to use images from the &lt;code&gt;src/assets&lt;/code&gt; folder, you first need to import them into your component.&lt;/p&gt;

&lt;p&gt;React (through Vite) then bundles and optimizes these files during the build process.&lt;/p&gt;

&lt;h2&gt;
  
  
  package.json
&lt;/h2&gt;

&lt;p&gt;I like to think of &lt;code&gt;package.json&lt;/code&gt; as the project's identity card. It stores project information, lists the project's dependencies and development dependencies, and defines scripts for running, building, and testing the application. When we run &lt;code&gt;npm install&lt;/code&gt;, npm reads &lt;code&gt;package.json&lt;/code&gt; and installs all the required packages automatically.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F74ex03704ry83czx75fj.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F74ex03704ry83czx75fj.png" alt="React inside package_json file" width="577" height="615"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's what each section of &lt;code&gt;package.json&lt;/code&gt; does:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;name&lt;/strong&gt;: The name of your project (react-intro).&lt;br&gt;
&lt;strong&gt;private&lt;/strong&gt;: Setting &lt;code&gt;"private": true&lt;/code&gt; prevents the project from being accidentally published to npm.&lt;/p&gt;

&lt;p&gt;Since this is my own learning project, I don't want it to be published as a package.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;version&lt;/strong&gt;: The current version of the project. 0.0.0 is often used for projects still under development.&lt;br&gt;
&lt;strong&gt;type&lt;/strong&gt;: "module" means the project uses ES Modules, allowing you to use import and export.&lt;br&gt;
&lt;strong&gt;Scripts&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;  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "lint": "oxlint",
    "preview": "vite preview"
  },
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These are commands you can run:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Script&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;npm run dev&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Starts the development server&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;npm run build&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Creates an optimized production build&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;npm run lint&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Checks the code for errors and coding issues&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;npm run preview&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Runs the production build locally for testing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Dependencies&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;
  "dependencies": {
    "react": "^19.2.7",
    "react-dom": "^19.2.7"
  },
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These packages are required for your application to run.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;react&lt;/strong&gt; : The core React library used to build user interfaces.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;react-dom&lt;/strong&gt; : Renders React components into the browser's DOM.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Dev Dependencies&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;  "devDependencies": {
    "@types/react": "^19.2.17",
    "@types/react-dom": "^19.2.3",
    "@vitejs/plugin-react": "^6.0.3",
    "oxlint": "^1.71.0",
    "vite": "^8.1.1"
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These packages are only needed during development.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;@types/react&lt;/strong&gt; : Type definitions for React (mainly for TypeScript support).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;@types/react-dom&lt;/strong&gt; : Type definitions for React DOM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;@vitejs/plugin-react&lt;/strong&gt; : Enables React support in Vite (including Fast Refresh).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;oxlint&lt;/strong&gt; : A fast linter that checks your code for mistakes and style issues.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;vite&lt;/strong&gt; : The build tool and development server for your React project.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  index.html
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;index.html&lt;/code&gt; is the main HTML page of a React application. It is the only HTML file that the browser loads. React then takes control and renders the application inside it.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6rcydohczz3uk1d7vnhj.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6rcydohczz3uk1d7vnhj.png" alt="React inside index_html file" width="800" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;React injects the application into:&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;div id="root"&amp;gt;&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the root container, where React renders your entire application inside this &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;It also loads &lt;code&gt;main.jsx&lt;/code&gt;, which starts the React app.&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;script type="module" src="/src/main.jsx"&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  vite.config.js
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vite.config.js&lt;/code&gt; is the configuration file for Vite. It tells Vite how to build and run your React application.&lt;br&gt;
As a beginner, I don't need to modify this file very often, but it's useful to know that it exists.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;When I first opened my React project, the number of files and folders felt a little overwhelming.&lt;/p&gt;

&lt;p&gt;After exploring them one by one, I realized that each file has a specific purpose.&lt;/p&gt;

&lt;p&gt;As a beginner, I don't need to understand every detail immediately.&lt;/p&gt;

&lt;p&gt;For now, knowing where my React code lives and what each important file does gives me a solid foundation to continue learning React.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;p&gt;After exploring the React project structure, here are the main things I learned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;src&lt;/code&gt; is where I write most of my React code.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;public&lt;/code&gt; stores static files such as images and icons.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;App.jsx&lt;/code&gt; is the main React component displayed in the browser.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;main.jsx&lt;/code&gt; is the entry point of the React application.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;package.json&lt;/code&gt; stores project information, dependencies, and scripts.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;Now that I understand the React project structure, the next step is learning JSX, one of React's core concepts.&lt;/p&gt;

&lt;p&gt;After that, I'll explore the four ways of conditional rendering and learn when to use each approach.&lt;/p&gt;

&lt;p&gt;I'm excited to continue this learning journey, and I hope you'll join me!&lt;/p&gt;

&lt;p&gt;Thanks for reading, and happy coding!&lt;/p&gt;

</description>
      <category>react</category>
      <category>vite</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Creating My First React Project with Vite: Understanding Every Command</title>
      <dc:creator>Sravanthi</dc:creator>
      <pubDate>Tue, 07 Jul 2026 02:47:04 +0000</pubDate>
      <link>https://dev.to/dev_sravanthi/creating-my-first-react-project-with-vite-understanding-every-command-26bf</link>
      <guid>https://dev.to/dev_sravanthi/creating-my-first-react-project-with-vite-understanding-every-command-26bf</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;When I started learning React, almost every tutorial began with a few commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm create vite@latest
npm install
npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I followed along, but I realized something: I didn't actually know what these commands were doing.&lt;/p&gt;

&lt;p&gt;Questions like these came to mind:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why do we use Vite?&lt;/li&gt;
&lt;li&gt;Why do we need &lt;code&gt;npm install&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;Why do we run &lt;code&gt;npm run dev&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;What does &lt;code&gt;code .&lt;/code&gt; mean?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So instead of just memorizing the commands, I wanted to understand why each one is needed.&lt;br&gt;
In this article, I'll walk through creating my very first React project with Vite and explain each command along the way.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Creating the Project&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I started by opening my terminal and running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm create vite@latest react-intro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqnq5u75yfyfm6zp92t5u.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqnq5u75yfyfm6zp92t5u.png" alt="Terminal showing npm create vite command" width="597" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's break this command down.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;npm&lt;/strong&gt;   : Node Package Manager. It helps install and manage JavaScript packages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;create&lt;/strong&gt;    : Creates a new project.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;vite&lt;/strong&gt;  : Uses Vite to set up the basic structure of the React project, including the required files and folders.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;@latest&lt;/strong&gt;   : Downloads the latest version of Vite.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;react-intro&lt;/strong&gt;   : The name of my project folder.
At this point, Vite has created the initial project structure for us.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Vite Created My Project... What's Next?
&lt;/h2&gt;

&lt;p&gt;After a few seconds, Vite displayed this message.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmc0arh0vn1uf41jf8ju5.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmc0arh0vn1uf41jf8ju5.png" alt="Vite showing instructions to run cd react-intro npm install and npm run dev" width="582" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It asked me to run three commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd react-intro
npm install
npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When I first saw these commands, I wondered:&lt;br&gt;
 "Why do I need to run these? What do they actually do?"&lt;/p&gt;

&lt;p&gt;Let's go through them one by one.&lt;/p&gt;
&lt;h2&gt;
  
  
  Moving into the Project Folder
&lt;/h2&gt;

&lt;p&gt;The first command is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd react-intro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;cd&lt;/code&gt; command stands for Change Directory.&lt;/p&gt;

&lt;p&gt;Think of it like entering a newly built house.&lt;/p&gt;

&lt;p&gt;Vite has already created the house (the react-intro folder), but I'm still standing outside.&lt;/p&gt;

&lt;p&gt;Running&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd react-intro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;takes me inside the project folder so I can work with its files.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faz9radjrk77pcy8mgyqt.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faz9radjrk77pcy8mgyqt.png" alt="run cd react-intro" width="557" height="266"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing Project Dependencies
&lt;/h2&gt;

&lt;p&gt;After creating the project, Vite displayed the next commands I needed to run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fja2d0e15dwd8hq1uf9g4.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fja2d0e15dwd8hq1uf9g4.png" alt="Running npm install" width="497" height="180"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After installation completes, you will notice a new &lt;code&gt;node_modules&lt;/code&gt; folder created inside your project. &lt;/p&gt;

&lt;p&gt;At first, I wondered why this step was needed. Vite had already created my React project, so why did I need to install anything?&lt;/p&gt;

&lt;p&gt;The reason is that Vite creates the project structure and configuration files, but it does not download all the packages required for the application to run.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;npm install&lt;/code&gt; command reads the &lt;code&gt;package.json&lt;/code&gt; file and downloads all the required dependencies for the project.&lt;/p&gt;

&lt;p&gt;These dependencies are stored inside a folder called:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;node_modules&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;node_modules&lt;/code&gt; folder contains the packages that our React application needs, including React and other tools used during development.&lt;/p&gt;

&lt;p&gt;After &lt;code&gt;npm install&lt;/code&gt; finishes, the project is ready to run.&lt;/p&gt;

&lt;h2&gt;
  
  
  Opening the Project in Visual Studio Code
&lt;/h2&gt;

&lt;p&gt;After installing the dependencies, I opened the project in Visual Studio Code to continue development using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;code .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7j56zg2xw2ysjoj8no8q.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7j56zg2xw2ysjoj8no8q.png" alt="Terminal showing code to open in vs code" width="506" height="76"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;.&lt;/code&gt;(dot) represents the current folder.&lt;/p&gt;

&lt;p&gt;Since I was already inside my react-intro project folder, this command opened that project directly in Visual Studio Code.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6b3vg52bpssrms0d3nvo.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6b3vg52bpssrms0d3nvo.png" alt="React project opened in Visual Studio Code showing project files" width="230" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now I could see all the files and folders that Vite had created, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;src&lt;/li&gt;
&lt;li&gt;public&lt;/li&gt;
&lt;li&gt;package.json&lt;/li&gt;
&lt;li&gt;node_modules (created after running npm install)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From this point on, I used the VS Code integrated terminal to continue working on my project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Running the Development Server
&lt;/h2&gt;

&lt;p&gt;With the project open in VS Code, I opened a new terminal and ran:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp1f8oc3el92kus8fm2q3.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp1f8oc3el92kus8fm2q3.png" alt="VS Code terminal showing npm run dev" width="798" height="147"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This command starts Vite's development server and displays a local URL, usually:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://localhost:5173" rel="noopener noreferrer"&gt;http://localhost:5173&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The port number may change if another application is already using that port.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4i18rs2ir8ui3j9nh2ph.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4i18rs2ir8ui3j9nh2ph.png" alt="VS Code terminal showing Vite development server running" width="800" height="232"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Opening this URL in the browser lets you see your React application running locally.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frn8m59c0rf6b5jn3cmmz.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frn8m59c0rf6b5jn3cmmz.png" alt="Browser displaying the default React Vite application" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One feature I really liked is that Vite automatically reflects my code changes in the browser whenever I save my files. This feature is called Hot Module Replacement (HMR), which makes development much faster because I don't need to refresh the browser manually.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Creating a React project is more than just copying commands from a tutorial.&lt;/p&gt;

&lt;p&gt;Understanding what each command does helped me feel more confident while setting up my development environment.&lt;/p&gt;

&lt;p&gt;The commands I learned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;npm create vite@latest react-intro&lt;/code&gt;&lt;/strong&gt; : Creates a new React project using Vite&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;cd react-intro&lt;/code&gt;&lt;/strong&gt; : Moves into the project folder&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;npm install&lt;/code&gt;&lt;/strong&gt;    : Installs the required project dependencies&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;code .&lt;/code&gt;&lt;/strong&gt; : Opens the project in Visual Studio Code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;npm run dev&lt;/code&gt;&lt;/strong&gt;    : Starts the local development server&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the first part of my React learning journey. I'll continue documenting what I learn as I work towards becoming a full-stack developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next?
&lt;/h2&gt;

&lt;p&gt;This is Part 1 of my React learning journey.&lt;/p&gt;

&lt;p&gt;In the next article, I'll explore the React project structure and understand the purpose of folders like &lt;code&gt;src&lt;/code&gt;, &lt;code&gt;public&lt;/code&gt;, and files like &lt;code&gt;package.json&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

</description>
      <category>react</category>
      <category>vite</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
