<?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: Maria Mendonca</title>
    <description>The latest articles on DEV Community by Maria Mendonca (@mendoncamaria).</description>
    <link>https://dev.to/mendoncamaria</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2096328%2Fa70f6936-6cf6-4530-89c1-f1ad41514803.png</url>
      <title>DEV Community: Maria Mendonca</title>
      <link>https://dev.to/mendoncamaria</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mendoncamaria"/>
    <language>en</language>
    <item>
      <title>The Evolution of React: A Guide to Class vs. Functional Components</title>
      <dc:creator>Maria Mendonca</dc:creator>
      <pubDate>Tue, 23 Sep 2025 06:30:15 +0000</pubDate>
      <link>https://dev.to/mendoncamaria/the-evolution-of-react-a-guide-to-class-vs-functional-components-1bdl</link>
      <guid>https://dev.to/mendoncamaria/the-evolution-of-react-a-guide-to-class-vs-functional-components-1bdl</guid>
      <description>&lt;p&gt;Hey guys!&lt;/p&gt;

&lt;p&gt;It's great to be back! After a short break, I'm thrilled to dive back into the world of React with a topic that's central to modern web development: the big shift from class components to functional ones.&lt;/p&gt;

&lt;p&gt;The evolution of React from class components to functional components isn't just a simple facelift or a change in syntax—it represents a profound shift in how we approach component design and manage complexity. It's an intentional move toward making React codebases more predictable, understandable, and reusable.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem with Class Components
&lt;/h3&gt;

&lt;p&gt;Before the introduction of Hooks, the primary way to build stateful, complex components was through the class component model. While powerful, they introduced several pain points that often led to confusion and verbose code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Complex this Context&lt;/strong&gt;: Class components rely heavily on the JavaScript class syntax, which brings with it the tricky concept of the this keyword. Developers constantly had to worry about correctly binding methods in the constructor to ensure this referred to the component instance inside event handlers. This was a frequent source of bugs, especially for developers new to React or JavaScript.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Confusing Lifecycle Methods&lt;/strong&gt;: To manage side effects (like data fetching, setting up subscriptions, or manual DOM manipulation), you had to spread related logic across several specialized lifecycle methods: componentDidMount, componentDidUpdate, and componentWillUnmount. For example, setting up a subscription in componentDidMount and tearing it down in componentWillUnmount meant two pieces of related logic were physically separated, making components difficult to read and maintain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logic Reuse Difficulty&lt;/strong&gt;: Sharing non-visual, stateful logic between components was cumbersome. It typically required implementing advanced patterns like Higher-Order Components (HOCs) or Render Props. While effective, these patterns often resulted in a deeply nested "wrapper hell" in the component tree, hurting code readability and making it difficult to trace data flow.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9juaayuc6nfbkjdkbes0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9juaayuc6nfbkjdkbes0.png" alt="State vs Class" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;
Image generated using Gemini&lt;/p&gt;
&lt;h3&gt;
  
  
  The Rise of Functional Components
&lt;/h3&gt;

&lt;p&gt;Initially, functional components were a simple alternative, sometimes called "stateless functional components." They were just JavaScript functions that accepted props and returned JSX. They were excellent for presentational logic but couldn't hold their own state or manage side effects—they were functionally incomplete for complex tasks.&lt;/p&gt;

&lt;p&gt;This changed everything.&lt;/p&gt;

&lt;p&gt;The modern functional component is the intended future of React. It provides a cleaner, simpler, and more direct way to express component logic. By embracing functions as the primary building block, React can optimize rendering and allow developers to collocate related logic, regardless of whether it’s state management or a side effect.&lt;/p&gt;
&lt;h3&gt;
  
  
  The Magic of Hooks: Enabling Stateful Functions
&lt;/h3&gt;

&lt;p&gt;The key to the entire evolution is Hooks. Hooks are special functions that let you "hook into" React features like state and the component lifecycle from within a functional component. They are what finally gave functional components parity with—and eventually superiority over—class components. We will be learning about Hooks in Part 2 of the series.&lt;/p&gt;
&lt;h3&gt;
  
  
  The Comparison
&lt;/h3&gt;

&lt;p&gt;Let us see the code comparison of class based and functional based components with a simplest example of "Hello, World" since we are currently working with the program basics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Class Component&lt;/strong&gt;&lt;br&gt;
This approach uses a JavaScript class that extends React.Component. It must include a render() method that returns the JSX you want to display.&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="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Welcome&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Component&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;render&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="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="k"&gt;this&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="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;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;HelloWorld&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;Key Points:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It's a JavaScript class.&lt;/li&gt;
&lt;li&gt;You must import React and extend React.Component.&lt;/li&gt;
&lt;li&gt;The JSX is returned from a render() method.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Functional Component&lt;/strong&gt;&lt;br&gt;
This is a standard JavaScript function that accepts props as an argument and returns JSX. This is the modern and recommended approach for writing React components.&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="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&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;(&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;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;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;HelloWorld&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;Key Points&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It's a simple JavaScript function.&lt;/li&gt;
&lt;li&gt;It takes no arguments in this simple case.&lt;/li&gt;
&lt;li&gt;The JSX is returned directly by the function.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Homework Challenge:
&lt;/h3&gt;

&lt;p&gt;To make sure these concepts stick, here is a small challenge for you:&lt;/p&gt;

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

&lt;p&gt;This hands-on exercise will make the transition from class to functional components crystal clear.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to Submit Your Solution&lt;/strong&gt;&lt;br&gt;
If you want to share your work or get feedback, you can share a screenshot of your finished project in the comments below. You can also paste your updated App.jsx code directly into the discussion to get feedback from me and the community. The next article will have the answer to this homework problem.&lt;/p&gt;

&lt;p&gt;The Upcoming Article will cover the topic of reusability and event handling. Stay tunes and See you on Friday!&lt;/p&gt;

&lt;h2&gt;
  
  
  Reference
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;React Official Documentation: &lt;a href="https://legacy.reactjs.org/docs/components-and-props.html" rel="noopener noreferrer"&gt;Legacy Documentation&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Let's Connect!
&lt;/h2&gt;

&lt;p&gt;If you found this article helpful, please consider following me on Dev.to. You can also connect with me on these platforms for more content and conversation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://www.linkedin.com/in/mariamendonca/" rel="noopener noreferrer"&gt;linkedin.com/in/mariamendonca/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/mendoncamaria" rel="noopener noreferrer"&gt;github.com/mendoncamaria&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;X: &lt;a href="https://x.com/mmendonca0610" rel="noopener noreferrer"&gt;@mmendonca0610&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Mastodon Social: &lt;a href="https://mastodon.social/@mendoncamaria" rel="noopener noreferrer"&gt;@mendoncamaria&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>java</category>
      <category>react</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Passing Data with Props: Building Parent-Child Components</title>
      <dc:creator>Maria Mendonca</dc:creator>
      <pubDate>Tue, 09 Sep 2025 06:30:00 +0000</pubDate>
      <link>https://dev.to/mendoncamaria/passing-data-with-props-building-parent-child-components-23fp</link>
      <guid>https://dev.to/mendoncamaria/passing-data-with-props-building-parent-child-components-23fp</guid>
      <description>&lt;p&gt;Hey!&lt;/p&gt;

&lt;p&gt;If you've been following along, you've successfully created your first React component—the one that says "Hello, World!" It was a great first step, but that component is static. It will always say the same thing, no matter what.&lt;/p&gt;

&lt;p&gt;In this article, we're going to unlock the real magic of React. We'll dive into props, which are the key to making your components dynamic and reusable. Think of props as a way to pass data into a component, just like you pass arguments into a function.&lt;/p&gt;

&lt;p&gt;By the end of this article, you'll know how to create one component and then use it over and over with different data to display whatever you want.&lt;/p&gt;

&lt;h3&gt;
  
  
  Answer to previous Homework Problem
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./App.css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&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;&amp;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;Hello, World!&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;
      // Replace The below code with your real name
      &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;Your Name&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;&amp;lt;/&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's dive in and start passing data!&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem with Static Components
&lt;/h3&gt;

&lt;p&gt;In the last article, you successfully created your first React component—a simple &amp;lt;h1&amp;gt; tag that proudly says "Hello, World!". Congratulations! It was an amazing first step, but that component is &lt;strong&gt;static&lt;/strong&gt;. It's hard-coded to always display the same text, no matter where you put it in your application.&lt;/p&gt;

&lt;p&gt;This is a problem for building a real-world application. Think about a social media feed. Every post has a different username, profile picture, and text. You wouldn't want to create a brand new component for every single post. That would be incredibly inefficient and messy.&lt;/p&gt;

&lt;p&gt;So, how do we solve this? How do we build one component and then use it over and over again with different data?&lt;/p&gt;

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

&lt;p&gt;You can think of a React component without props as being like a simple JavaScript function with no arguments; it always returns the same value. Props, which stand for "properties," are like the arguments you pass into a function. They allow you to customize a component's output without changing its core code, making it reusable and dynamic.&lt;/p&gt;

&lt;p&gt;Just as a function can take different arguments to produce a different result, a component can take different props to render different data. This simple concept is the key to building powerful, flexible applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Exactly Are Props?
&lt;/h3&gt;

&lt;p&gt;Let's get a clear, concise definition of props.&lt;/p&gt;

&lt;p&gt;The term props is short for properties. At their most basic, they are a mechanism for passing data from a parent component down to a child component.&lt;/p&gt;

&lt;p&gt;Think of your components as a family tree. Data can flow down from the parent (App) to its children (Welcome), but not the other way around. A component can receive props from its parent and use that information to decide what to render.&lt;/p&gt;

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

&lt;p&gt;A crucial rule to remember about props is that they are read-only. A child component receives the data, but it cannot change it. You can't modify props inside the component that receives them. This rule is a core part of React's design philosophy, as it ensures that your data flow is predictable and easy to reason about.&lt;/p&gt;

&lt;p&gt;In short, props are how you give your components instructions about what they should display and how they should behave.&lt;/p&gt;

&lt;h3&gt;
  
  
  Your First Component with Props
&lt;/h3&gt;

&lt;p&gt;It's time for the hands-on part! We're going to build a reusable Welcome component that can display a greeting with any name we give it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create a New File:&lt;/strong&gt; &lt;br&gt;
Inside your &lt;code&gt;src&lt;/code&gt; folder, create a new file and name it &lt;code&gt;Welcome.jsx&lt;/code&gt;. This is where we will write the code for our new component.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add the Component Code:&lt;/strong&gt;&lt;br&gt;
Open the &lt;code&gt;Welcome.jsx&lt;/code&gt; file and paste the following code into it.&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="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&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="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;h1&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Hello&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="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;!&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/h1&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Welcome&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;Understanding the Code:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;Welcome&lt;/strong&gt; function now takes an argument called &lt;strong&gt;props&lt;/strong&gt;. This is a JavaScript object that will contain all the data passed to our component.
Inside the &lt;strong&gt;return&lt;/strong&gt; statement, we use curly braces &lt;strong&gt;{}&lt;/strong&gt; to embed JavaScript directly into our JSX. When React renders this, it will replace &lt;strong&gt;{props.name}&lt;/strong&gt; with the actual value of the &lt;strong&gt;name&lt;/strong&gt; property.&lt;/li&gt;
&lt;li&gt;We also added an &lt;strong&gt;export default&lt;/strong&gt; statement. This makes our &lt;strong&gt;Welcome&lt;/strong&gt; component available for other files (like App.jsx or similar) to import and use.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You have now successfully created a reusable component that is ready to receive and display data! In the next step, we'll see how to pass that data to it from the &lt;strong&gt;App&lt;/strong&gt; component.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Your New Prop-Powered Component
&lt;/h3&gt;

&lt;p&gt;Now that we have our Welcome component ready to receive data, let's see how we use it. We will work inside the App.jsx file, as this is the parent component that will pass data down to its children.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Import the New Component: At the top of your App.jsx file, add an import statement for our new component.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Welcome&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./Welcome&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Call the Component with Props: Now, clear out the existing content inside the return statement in your App.jsx file. We will replace it with our new Welcome component and pass it a name prop.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Welcome&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;World&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your &lt;strong&gt;App.jsx&lt;/strong&gt; should look like this:&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="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./App.css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Welcome&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./Welcome.jsx&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&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="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Welcome&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;World&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The Result:&lt;/strong&gt;&lt;br&gt;
The Browser should look like this:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd09nza6xhj0af8jljnp9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd09nza6xhj0af8jljnp9.png" alt="Result" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let's Check Reusability:&lt;/strong&gt;&lt;br&gt;
This is where you see the power of props! You can reuse your Welcome component as many times as you like, passing a different name prop each time. Try it yourself by adding a few more lines. Update the &lt;strong&gt;App.jsx&lt;/strong&gt; file with the following code:&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="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./App.css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Welcome&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./Welcome&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&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;&amp;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;"John Doe"&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="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;"React"&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="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;"Friend"&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;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The results should look like this:&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Most Common mistakes with props (Even I made this, sometimes do it now)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Trying to Change a Prop&lt;/strong&gt;&lt;br&gt;
A key rule of React is that props are read-only. You cannot change a prop's value inside the component that receives it. Trying to do so will result in an error or unexpected behavior.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Incorrect Way:&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="c1"&gt;// In the child component&lt;/span&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="c1"&gt;// This is a big no-no!&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;New Name&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;&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;Correct Way:&lt;/strong&gt;&lt;br&gt;
If a component needs to change its own data, that data should be managed with state, not props.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Passing Numbers and Booleans as Strings&lt;/strong&gt;&lt;br&gt;
When I first started using props, I made a very common mistake: I passed everything as a string. One day, I had a component that was supposed to render only when a prop was &lt;code&gt;true&lt;/code&gt;, but it kept rendering even when I passed it &lt;code&gt;"false"&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;After a lot of head-scratching, I found my mistake: in JavaScript, all non-empty strings are considered truthy. That means &lt;code&gt;"false"&lt;/code&gt;, &lt;code&gt;"0"&lt;/code&gt;, and &lt;code&gt;" "&lt;/code&gt; are all treated as true in a boolean context. This is a crucial lesson to learn early on.&lt;/p&gt;

&lt;p&gt;In JSX, anything you put inside double quotes &lt;code&gt;""&lt;/code&gt; is treated as a string literal. If you want to pass a JavaScript value—like a number, a boolean, an array, or an object—you must wrap it in curly braces &lt;code&gt;{}&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Here's a comparison of the incorrect and correct ways to pass these values.&lt;/p&gt;

&lt;p&gt;Incorrect Way:&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="c1"&gt;// App.jsx&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;UserCard&lt;/span&gt; &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"25"&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt; 

&lt;span class="c1"&gt;// UserCard.jsx&lt;/span&gt;
&lt;span class="c1"&gt;// props.age will be the string "25", not the number 25.&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;UserCard&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;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Age: &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;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Correct Way:&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="c1"&gt;// App.jsx&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;UserCard&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;25&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt; 

&lt;span class="c1"&gt;// UserCard.jsx&lt;/span&gt;
&lt;span class="c1"&gt;// props.age is the number 25.&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;UserCard&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;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Age: &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;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Not Destructuring Props&lt;/strong&gt;&lt;br&gt;
While not technically a mistake, this is a common pattern that makes code verbose and less readable. &lt;/p&gt;

&lt;p&gt;I remember my first component that took more than two props. The component needed to display the user's name, age, location, and a short bio.&lt;/p&gt;

&lt;p&gt;I started writing the code using props.name, props.age, props.location, and props.bio. The code worked, but it started to feel messy. The repetition was tedious, and I constantly had to look at the top of the file to remember the exact prop names. I'd sometimes type props.userLocation instead of props.location, leading to a quick, confusing bug.&lt;/p&gt;

&lt;p&gt;The code worked, but it was just a lot of mess. This is where destructuring comes in as a cleaner, more efficient solution.&lt;/p&gt;

&lt;p&gt;Old way:&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;const&lt;/span&gt; &lt;span class="nx"&gt;UserProfile&lt;/span&gt; &lt;span class="o"&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="o"&gt;=&amp;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="nt"&gt;div&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;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;&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;bio&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;div&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;New Way:&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;const&lt;/span&gt; &lt;span class="nx"&gt;UserProfile&lt;/span&gt; &lt;span class="o"&gt;=&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;bio&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;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="nt"&gt;div&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;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;&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;bio&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;div&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;h3&gt;
  
  
  The Takeaway:
&lt;/h3&gt;

&lt;p&gt;We just did something powerful. We took our simple, static "Hello, World" program and made it dynamic and reusable. This is the core magic of React. Instead of writing a new component for every single piece of content, we can use a single component and simply pass in different props to customize it.&lt;/p&gt;

&lt;p&gt;You've now learned that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Props are like arguments for your components.&lt;/li&gt;
&lt;li&gt;They are passed from a parent component to a child component.&lt;/li&gt;
&lt;li&gt;They are read-only, meaning the child component can use them but cannot change them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This concept of passing data down is the foundation of building complex React applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Homework Challenge:
&lt;/h3&gt;

&lt;p&gt;To make sure these concepts stick, here is a small challenge for you:&lt;/p&gt;

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

&lt;p&gt;This exercise will help you get comfortable with passing multiple props to a single component and seeing the power of reusability firsthand.&lt;/p&gt;

&lt;h4&gt;
  
  
  How to Submit Your Solution
&lt;/h4&gt;

&lt;p&gt;If you want to share your work or get feedback, you can share a screenshot of your finished project in the comments below. You can also paste your updated App.jsx code directly into the discussion to get feedback from me and the community. The next article will have the answer to this homework problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Upcoming Article
&lt;/h2&gt;

&lt;p&gt;Congratulations on finishing Props! You're now a pro at using props to make your components dynamic. Now that you understand the fundamental building blocks, it's the perfect time to explore the history and future of React.&lt;/p&gt;

&lt;p&gt;In the next article, "&lt;strong&gt;The Evolution of React: A Guide to Class vs. Functional Components&lt;/strong&gt;", we'll dive into how React has changed over the years. We'll compare the old way of building components (class components) with the modern approach (functional components), so you understand why the community has moved in this direction.&lt;/p&gt;

&lt;p&gt;See you on Friday!&lt;/p&gt;

&lt;h2&gt;
  
  
  Reference
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Props by NetNinja: &lt;a href="https://www.youtube.com/watch?v=PHaECbrKgs0" rel="noopener noreferrer"&gt;youtube.com/watch&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;React Official Documentation: &lt;a href="https://legacy.reactjs.org/docs/components-and-props.html" rel="noopener noreferrer"&gt;Legacy Documentation&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Let's Connect!
&lt;/h2&gt;

&lt;p&gt;If you found this article helpful, please consider following me on Dev.to. You can also connect with me on these platforms for more content and conversation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://www.linkedin.com/in/mariamendonca/" rel="noopener noreferrer"&gt;linkedin.com/in/mariamendonca/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/mendoncamaria" rel="noopener noreferrer"&gt;github.com/mendoncamaria&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;X: &lt;a href="https://x.com/mmendonca0610" rel="noopener noreferrer"&gt;@mmendonca0610&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Mastodon Social: &lt;a href="https://mastodon.social/@mendoncamaria" rel="noopener noreferrer"&gt;@mendoncamaria&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>react</category>
      <category>beginners</category>
    </item>
    <item>
      <title>The Syntax Scroll by Maria: A Developer's Weekly Digest</title>
      <dc:creator>Maria Mendonca</dc:creator>
      <pubDate>Sat, 06 Sep 2025 09:50:00 +0000</pubDate>
      <link>https://dev.to/mendoncamaria/the-syntax-scroll-by-maria-a-developers-weekly-digest-1f8l</link>
      <guid>https://dev.to/mendoncamaria/the-syntax-scroll-by-maria-a-developers-weekly-digest-1f8l</guid>
      <description>&lt;p&gt;Welcome to The Syntax Scroll!&lt;/p&gt;

&lt;p&gt;In a world where tech news moves at the speed of light, it's easy to miss the most important stories. That's why I'm here to do the scrolling for you.&lt;/p&gt;

&lt;p&gt;In this inaugural edition, we'll quickly catch you up on the top headlines from the past two weeks. From a major shake-up in the AI world to significant product releases from tech giants and important updates for developers, this is your bi-weekly dose of the tech news that actually matters.&lt;/p&gt;

&lt;p&gt;Let's dive in.&lt;/p&gt;

&lt;h2&gt;
  
  
  OpenAI Launches New 'AI-Powered Jobs Platform' to Compete with LinkedIn
&lt;/h2&gt;

&lt;p&gt;In a major move, OpenAI has announced plans to enter the professional networking space with a new AI-driven hiring service. The platform is designed to connect employers with AI-skilled talent, using advanced matching algorithms to pair candidates with job opportunities. This news signals a direct challenge to LinkedIn's dominance in the tech hiring market and highlights the growing importance of certified AI fluency.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://timesofindia.indiatimes.com/technology/tech-news/openai-plans-to-take-on-linkedin-with-ai-powered-jobs-platform/articleshow/123714777.cms" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fstatic.toiimg.com%2Fthumb%2Fmsid-123714772%2Cwidth-1280%2Cheight-720%2Cimgsize-20560%2Cresizemode-6%2Coverlay-toi_sw%2Cpt-32%2Cy_pad-600%2Fphoto.jpg" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://timesofindia.indiatimes.com/technology/tech-news/openai-plans-to-take-on-linkedin-with-ai-powered-jobs-platform/articleshow/123714777.cms" rel="noopener noreferrer" class="c-link"&gt;
            OpenAI plans to take on LinkedIn with AI-powered jobs platform - The Times of India
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Tech News News: ChatGPT creator OpenAI is now all set to take on professional social networking platform LinkedIn. OpenAI has announced its plans to launch OpenAI Job.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ftimesofindia.indiatimes.com%2Ficons%2Ftoifavicon.ico"&gt;
          timesofindia.indiatimes.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  Google Cloud Study Reveals Over Half of All Executives Are Deploying AI Agents
&lt;/h2&gt;

&lt;p&gt;A new report from Google Cloud reveals that more than half (52%) of executives surveyed have already deployed AI agents in their organizations. The study highlights that early adopters are seeing significant ROI in areas like customer service, marketing, and software development, with a growing focus on data privacy and security when choosing AI providers.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://www.googlecloudpresscorner.com/2025-09-04-Google-Cloud-Study-Reveals-52-of-Executives-Say-Their-Organizations-Have-Deployed-AI-Agents,-Unlocking-a-New-Wave-of-Business-Value,1" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmma.prnewswire.com%2Fmedia%2F1032194%2FGoogle_Cloud_Logo.jpg%3Fp%3Dfacebook" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://www.googlecloudpresscorner.com/2025-09-04-Google-Cloud-Study-Reveals-52-of-Executives-Say-Their-Organizations-Have-Deployed-AI-Agents,-Unlocking-a-New-Wave-of-Business-Value,1" rel="noopener noreferrer" class="c-link"&gt;
            Google Cloud Study Reveals 52% of Executives Say Their Organizations Have Deployed AI Agents, Unlocking a New Wave of Business Value - Sep 4, 2025
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Second-annual ROI of AI Study highlights a new group of 'agentic AI early adopters' achieving higher returns in agentic AI use cases, including those related to customer experience, marketing,...
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.googlecloudpresscorner.com%2Ffavicon.png"&gt;
          googlecloudpresscorner.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  Apple's Record-Breaking $9 Billion Sales in India Signal Growing Importance
&lt;/h2&gt;

&lt;p&gt;Apple has achieved record sales in India, with revenues reaching $9 billion. The strong performance highlights India's emergence as a key consumer market and a growing production hub for the iPhone maker.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://economictimes.indiatimes.com/industry/cons-products/electronics/apples-india-sales-hit-record-9-billion-after-big-retail-push/articleshow/123712426.cms?from=mdr" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.etimg.com%2Fthumb%2Fmsid-123712446%2Cwidth-1200%2Cheight-630%2Cimgsize-113930%2Coverlay-economictimes%2Farticleshow.jpg" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://economictimes.indiatimes.com/industry/cons-products/electronics/apples-india-sales-hit-record-9-billion-after-big-retail-push/articleshow/123712426.cms?from=mdr" rel="noopener noreferrer" class="c-link"&gt;
            Apple’s India sales hit record $9 billion after big retail push - The Economic Times
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Apple's sales in India surged to a record $9 billion last fiscal year, driven by strong iPhone and MacBook demand. This growth, a 13% increase, comes as Apple navigates plateauing global sales and geopolitical uncertainties in China. The company is expanding its Indian retail presence with new stores and strategic initiatives like student discounts to overcome high taxes.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Feconomictimes.indiatimes.com%2Ficons%2Fetfavicon.ico"&gt;
          economictimes.indiatimes.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  Microsoft Launches Free AI-Skilling Initiatives in Collaboration with the White House
&lt;/h2&gt;

&lt;p&gt;In a major push for AI education, Microsoft announced a series of new commitments to support the Presidential AI Challenge. This includes making Copilot free for college students for 12 months, offering free LinkedIn Learning AI courses for teachers and students, and providing grants to educators. The initiative aims to close the AI skills gap and prepare the workforce for the future.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://blogs.microsoft.com/on-the-issues/2025/09/04/new-white-house-commitments/" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblogs.microsoft.com%2Fwp-content%2Fuploads%2Fsites%2F5%2F2025%2F09%2FFY26_OML_Elevate_New-Partnerships-Announcement_Blog-Header_V4_B-1024x576.png" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://blogs.microsoft.com/on-the-issues/2025/09/04/new-white-house-commitments/" rel="noopener noreferrer" class="c-link"&gt;
            New White House commitments empower teachers, students, and job seekers through AI skilling and learning  - Microsoft On the Issues
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Microsoft unveils new commitments that support the Presidential AI Challenge and the AI Education Executive Order to empower teachers and students, build AI skills, and create economic opportunity.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblogs.microsoft.com%2Fwp-content%2Fuploads%2Fsites%2F5%2F2017%2F08%2Ffavicon-599dd744b8cac.jpg"&gt;
          blogs.microsoft.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  React Native 0.81 Released with Android 16 Support and Faster iOS Builds
&lt;/h2&gt;

&lt;p&gt;For the mobile development community, the React Native team announced the release of version 0.81. This update includes support for Android 16 (API 36), experimental precompiled iOS builds for faster development, and stability improvements to the JavaScript API. The update marks a continued push for performance and developer experience in the cross-platform framework.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://reactnative.dev/blog" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Freactnative.dev%2Fimg%2Flogo-share.png" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://reactnative.dev/blog" rel="noopener noreferrer" class="c-link"&gt;
            Blog · React Native
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Blog
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Freactnative.dev%2Ffavicon.ico"&gt;
          reactnative.dev
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;





&lt;p&gt;That's all for this week's Syntax Scroll! I hope this roundup helped you stay on top of the latest in tech. I'll be back next &lt;strong&gt;Saturday at 6 PM IST&lt;/strong&gt; with another curated list of headlines. Until then, happy coding!&lt;/p&gt;

</description>
      <category>news</category>
      <category>ai</category>
      <category>reactnative</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Your First React Component: JSX, Components, and the "Hello, World" Program</title>
      <dc:creator>Maria Mendonca</dc:creator>
      <pubDate>Fri, 05 Sep 2025 06:30:00 +0000</pubDate>
      <link>https://dev.to/mendoncamaria/your-first-react-component-jsx-components-and-the-hello-world-program-2fkl</link>
      <guid>https://dev.to/mendoncamaria/your-first-react-component-jsx-components-and-the-hello-world-program-2fkl</guid>
      <description>&lt;p&gt;Hey there!&lt;/p&gt;

&lt;p&gt;If you've been following along, you've successfully completed the first and most important step: setting up your React project. Congratulations! You now have a blank canvas, and this is where the real fun begins.&lt;/p&gt;

&lt;p&gt;In this article, we're going to take our first practical steps into the world of building UIs. We'll demystify JSX—the special syntax that makes React so powerful—and you'll learn how to create your very first component. By the end of this post, you'll have a running "Hello, World" program, and you'll understand the core pieces that make it work.&lt;/p&gt;

&lt;p&gt;Ready to start coding? Let's go!&lt;/p&gt;

&lt;h2&gt;
  
  
  What Exactly Is a React Component?
&lt;/h2&gt;

&lt;p&gt;At its heart, React is all about building with components. Think of it like a set of digital LEGO bricks. Instead of building your entire website from a single, giant block, you create small, self-contained pieces—like a button, a search bar, or a user profile card. You can then assemble and rearrange these pieces to create complex, interactive user interfaces. This modular approach is a fundamental shift in how we build for the web.&lt;/p&gt;

&lt;p&gt;A component is simply a JavaScript function that returns a piece of UI. It's a fundamental concept that can be intimidating at first, but once you grasp it, you'll see why it's so powerful. As Alex Banks and Eve Porcello state in their book, Learning React, components are "the functional foundation of React’s architecture." They are the core building blocks that encapsulate both the logic and the presentation of your UI.&lt;/p&gt;

&lt;p&gt;Here is an example of a simple React component named WelcomeMessage. It's just a standard JavaScript function that returns some JSX (the HTML-like code) to be rendered on the page.&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="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// This is our WelcomeMessage component. &lt;/span&gt;
&lt;span class="c1"&gt;// It's a JavaScript function.&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;WelcomeMessage&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="c1"&gt;// It returns a piece of UI (JSX).&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;h1&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Hello&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="nx"&gt;Learners&lt;/span&gt;&lt;span class="o"&gt;!&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/h1&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;WelcomeMessage&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see, a component is a reusable function that, when called, renders a part of your user interface. This simple concept is the foundation for everything we will build in this series.&lt;/p&gt;

&lt;h3&gt;
  
  
  Introducing JSX- HTML in Your JavaScript
&lt;/h3&gt;

&lt;p&gt;The problem with building complex user interfaces is that the UI logic (the structure and content) and the business logic (what the app does) often become tangled. Writing all your UI elements using JavaScript can quickly become messy and difficult to read. It's like trying to draw a detailed picture using only written instructions instead of a pencil.&lt;/p&gt;

&lt;p&gt;This is where JSX comes in. JSX (which stands for JavaScript XML) is a syntax extension for JavaScript. It allows you to write HTML-like code directly inside your JavaScript files, making your code much more readable and intuitive. It might look like a template language, but it’s actually the full power of JavaScript.&lt;/p&gt;

&lt;p&gt;Consider this simple example. Without JSX, creating a heading element would look like this:&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;const&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createElement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;h1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello, world!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With JSX, that same code becomes much cleaner and more familiar:&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;const&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;h1&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Hello&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;world&lt;/span&gt;&lt;span class="o"&gt;!&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/h1&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see, this syntax is much easier to read and write.&lt;/p&gt;

&lt;p&gt;It’s important to remember a key rule: JSX is not HTML. It's a syntax that gets converted into regular JavaScript function calls behind the scenes. This conversion happens during the build process of your application.&lt;/p&gt;

&lt;h4&gt;
  
  
  Mistake I made while writing JSX for the first time
&lt;/h4&gt;

&lt;p&gt;A crucial rule is that a React component can only return a single root element. This means all your JSX elements must be wrapped inside a single parent tag, like a &amp;lt;div&amp;gt; or a &amp;lt;main&amp;gt; tag. For example, this will not work:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7pum1z1jy6axfv5obxxx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7pum1z1jy6axfv5obxxx.png" alt="React no single jsx" width="800" height="79"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A common and simple solution is to use a div tag, as you see below. This works because both elements are wrapped inside a single parent div:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhl299ictpe2rxu0z6jjs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhl299ictpe2rxu0z6jjs.png" alt="Wrapped JSX" width="790" height="118"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;However, a better solution is to use a React Fragment. A fragment lets you group children without adding an extra div to the HTML output. You can use the full &amp;lt;React.Fragment&amp;gt; tag or its shorthand, &amp;lt;&amp;gt;.&lt;/p&gt;

&lt;p&gt;This is the recommended approach for a cleaner, more efficient component.&lt;/p&gt;
&lt;h3&gt;
  
  
  Your First "Hello, World" Program
&lt;/h3&gt;

&lt;p&gt;You've successfully set up your development environment. Now, let's write our first lines of code.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Open Your Project in the Editor:&lt;/strong&gt; Go to your code editor (like VS Code) and open the my-react-app folder you created.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Find the App.jsx File:&lt;/strong&gt; In the project's file explorer, navigate to the src folder and open the App.jsx file. This is the main component file that Vite set up for you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review the Initial Code:&lt;/strong&gt; Take a moment to look at the code. You'll see a JavaScript function called App that returns some HTML-like code (this is JSX!). This is your first component. Don't worry about understanding every line just yet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write Your First Code:&lt;/strong&gt; We're going to make a simple change. Clear all the data inside the return and replace it with &lt;code&gt;&amp;lt;h1&amp;gt;Hello, World!&amp;lt;/h1&amp;gt;&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Before:&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="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;reactLogo&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./assets/react.svg&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;viteLogo&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/vite.svg&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./App.css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&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="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setCount&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&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="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="nx"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://vite.dev&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;_blank&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;img&lt;/span&gt; &lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;viteLogo&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;logo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Vite logo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/a&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="nx"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://react.dev&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;_blank&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;img&lt;/span&gt; &lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;reactLogo&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;logo react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;React logo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/a&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;h1&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Vite&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/h1&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;card&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt; &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setCount&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;count&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="nx"&gt;count&lt;/span&gt; &lt;span class="nx"&gt;is&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/button&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="nx"&gt;Edit&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;code&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;App&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;jsx&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/code&amp;gt; and save to test HM&lt;/span&gt;&lt;span class="err"&gt;R
&lt;/span&gt;        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/p&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;read-the-docs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nx"&gt;Click&lt;/span&gt; &lt;span class="nx"&gt;on&lt;/span&gt; &lt;span class="nx"&gt;the&lt;/span&gt; &lt;span class="nx"&gt;Vite&lt;/span&gt; &lt;span class="nx"&gt;and&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="nx"&gt;logos&lt;/span&gt; &lt;span class="nx"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;learn&lt;/span&gt; &lt;span class="nx"&gt;more&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/p&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;After:&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="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./App.css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&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="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;h1&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Hello&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;World&lt;/span&gt;&lt;span class="o"&gt;!&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/h1&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;See It in Action:&lt;/strong&gt; Save the file. Your browser, which is running your development server, should automatically update to reflect your change. This is the magic of React's hot-reloading feature.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Result&lt;/strong&gt;&lt;br&gt;
Congratulations! You've just created and rendered your first React component. The page in your browser should look like this:&lt;/p&gt;

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

&lt;h3&gt;
  
  
  The Takeaway
&lt;/h3&gt;

&lt;p&gt;Kudos on completing your first hands-on dive into React! Before we wrap up, let's quickly recap the key concepts you've just learned and applied.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You've successfully created your first component. Remember that the App.jsx file we worked in is a component—the fundamental building block of any React application.&lt;/li&gt;
&lt;li&gt;You used JSX. That HTML-like syntax you wrote directly inside your JavaScript file is called JSX. It's what makes React code so readable and easy to write.&lt;/li&gt;
&lt;li&gt;You saw it in the browser! You told React what to render (&amp;lt;h1&amp;gt;Hello, World!&amp;lt;/h1&amp;gt;) and it took care of the rest. This is the power of React’s declarative nature.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You are now officially a React developer! 🚀&lt;/p&gt;

&lt;h3&gt;
  
  
  Homework of the day
&lt;/h3&gt;

&lt;p&gt;Now that you've seen how easy it is to make a change, it's time for a small challenge to solidify your new skills. Your Homework is:&lt;/p&gt;

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

&lt;h4&gt;
  
  
  How to Submit Your Solution
&lt;/h4&gt;

&lt;p&gt;If you want to share your work or get feedback, you can share a screenshot of your finished project in the comments below. You can also paste your updated App.jsx code directly into the discussion to get feedback from me and the community. The next article will have the answer to this homework problem.&lt;/p&gt;

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

&lt;p&gt;In our next article, we'll dive into an even more powerful concept: props. Props are how we make our components reusable and dynamic.&lt;/p&gt;

&lt;p&gt;Think of it this way: the "Hello, World!" component you just created is a static template. It can only ever say "Hello, World!". In the next article, you'll learn how to use props as a way to send information from a parent component to a child component. This will allow you to create one Welcome component that can say "Hello, Alice!", "Hello, Bob!" or any other name, simply by passing in different data.&lt;/p&gt;

&lt;p&gt;Get ready to learn how to pass data to components to build more flexible and powerful user interfaces. See you then! 👋&lt;/p&gt;

&lt;h2&gt;
  
  
  Reference
&lt;/h2&gt;

&lt;p&gt;React Official Documentation: &lt;a href="https://react.dev/" rel="noopener noreferrer"&gt;react.dev&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's Connect!
&lt;/h2&gt;

&lt;p&gt;If you found this article helpful, please consider following me on Dev.to. You can also connect with me on these platforms for more content and conversation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://www.linkedin.com/in/mariamendonca/" rel="noopener noreferrer"&gt;linkedin.com/in/mariamendonca/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/mendoncamaria" rel="noopener noreferrer"&gt;github.com/mendoncamaria&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;X: &lt;a href="https://x.com/mmendonca0610" rel="noopener noreferrer"&gt;@mmendonca0610&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I have recently joined Mastodon Social. Consider giving me a follow there: &lt;a href="https://mastodon.social/@mendoncamaria" rel="noopener noreferrer"&gt;@mendoncamaria&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>react</category>
    </item>
    <item>
      <title>React Fundamentals: What It Is, Why We Use It, and How to Get Started</title>
      <dc:creator>Maria Mendonca</dc:creator>
      <pubDate>Mon, 01 Sep 2025 07:30:00 +0000</pubDate>
      <link>https://dev.to/mendoncamaria/react-fundamentals-what-it-is-why-we-use-it-and-how-to-get-started-p8a</link>
      <guid>https://dev.to/mendoncamaria/react-fundamentals-what-it-is-why-we-use-it-and-how-to-get-started-p8a</guid>
      <description>&lt;p&gt;Hey there!&lt;/p&gt;

&lt;p&gt;If you've been following along with our series, you've already seen the roadmap for our journey into the world of React. We've talked about the "why" and the "what," and now it's time to get our hands dirty.&lt;/p&gt;

&lt;p&gt;In this article, we're making the exciting leap from theory to practice. We'll start with a simple, jargon-free explanation of what React is, explore why it has become the go-to choice for developers everywhere, and then walk you through the simple steps of setting up your very first React project. By the end of this post, you will have a live, running application on your computer.&lt;/p&gt;

&lt;p&gt;Let's not wait any longer. Let's get started!&lt;/p&gt;

&lt;h3&gt;
  
  
  What Exactly Is React?
&lt;/h3&gt;

&lt;p&gt;React isn't a full-fledged framework; it's a JavaScript library for building user interfaces (UIs) or the "view layer" of an application. It was created by Facebook to solve a big problem: making it easy to build complex, interactive UIs where the data changes all the time.&lt;/p&gt;

&lt;p&gt;At its core, React is all about components. Think of a website like a Lego model. Instead of building the entire thing from a single block, you create smaller, self-contained pieces—like a button, a navigation bar, or a user profile card. You can then reuse and arrange these components to build your entire application. This modular approach makes your code cleaner and more manageable.&lt;/p&gt;

&lt;p&gt;React also follows a declarative approach. Instead of telling the app how to change the UI (e.g., "find this button, change its color, then add text"), you simply tell it what the UI should look like for a given state (e.g., "when the user is logged in, show the profile button"). React handles all the complex updates behind the scenes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fybalzt7rzhyr7yxr7cau.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fybalzt7rzhyr7yxr7cau.png" alt="React Logo" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;
Image generated using Gemini&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Why Do Developers Use React?
&lt;/h3&gt;

&lt;p&gt;So, why has React become so incredibly popular? It boils down to a few key advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reusability and Efficiency&lt;/strong&gt;: Components can be reused across different parts of your application, saving you time and effort. This is the cornerstone of modern web development.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Virtual DOM&lt;/strong&gt;: When you update a React component, it doesn't immediately change the browser's Document Object Model (DOM). Instead, it updates a "virtual" representation of the DOM in memory. React then calculates the most efficient way to apply these changes to the real DOM, making your app incredibly fast.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance&lt;/strong&gt;: The efficient updates from the Virtual DOM, combined with React's streamlined architecture, lead to highly performant and responsive applications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Huge Ecosystem&lt;/strong&gt;: React has a massive, active community. This means there's a huge library of tutorials, tools (like Next.js and Redux), and components available to help you solve almost any problem.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  How to Get Started: Setting Up a React Project
&lt;/h3&gt;

&lt;p&gt;Ready to get your hands dirty? The best way to start with React is by using a tool that sets up the entire project for you. We'll use Vite, a modern and very fast build tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;br&gt;
Ensure you have Node.js and a code editor, such as VS Code, installed on your machine. You can check if you have Node.js by running node -v in your terminal. If you do not have it, you can install it from the following links:&lt;br&gt;
&lt;a href="https://code.visualstudio.com/download" rel="noopener noreferrer"&gt;Install VS Code from here&lt;/a&gt;&lt;br&gt;
&lt;a href="https://nodejs.org/en/download" rel="noopener noreferrer"&gt;Install Node.js from here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Commands&lt;/strong&gt;&lt;br&gt;
Open your terminal and run the following command to create a new React project:&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="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;create&lt;/span&gt; &lt;span class="nx"&gt;vite&lt;/span&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;latest&lt;/span&gt; &lt;span class="nx"&gt;my&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;react&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;npm create vite@latest: This command uses npm (Node Package Manager) to run the latest version of the Vite project creation tool.&lt;/li&gt;
&lt;li&gt;my-react-app: This is the name of your new project's folder. You can name it whatever you want.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The installation will look something like this:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4rv2qxirmiddyj3udwsw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4rv2qxirmiddyj3udwsw.png" alt="Project Setup" width="610" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, navigate into your new project folder and run the command to install all the necessary dependencies:&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="nx"&gt;cd&lt;/span&gt; &lt;span class="nx"&gt;my&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;react&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;
&lt;span class="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, it's time to run your application! Use the following command:&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="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;run&lt;/span&gt; &lt;span class="nx"&gt;dev&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your terminal will show you a local address where your app is running (usually &lt;a href="http://localhost:5173" rel="noopener noreferrer"&gt;http://localhost:5173&lt;/a&gt;). Open this URL in your browser.&lt;/p&gt;

&lt;p&gt;This is going to be your folder structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;├── eslint.config.js
├── index.html
├── package.json
├── package-lock.json
├── node_modules/
├── public
│   └── vite.svg
├── README.md
├── src
│   ├── App.css
│   ├── App.jsx
│   ├── assets
│   │   └── react.svg
│   ├── index.css
│   └── main.jsx
└── vite.config.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The Result:&lt;/strong&gt; &lt;br&gt;
Congratulations! You've successfully created your first React application. You should see a page like this in your 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.amazonaws.com%2Fuploads%2Farticles%2F2yd98j59f9bmuiqk0h3d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2yd98j59f9bmuiqk0h3d.png" alt="Runtime Screen" width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Your First Homework
&lt;/h3&gt;

&lt;p&gt;Congratulations on getting your first React app up and running! Now it's time to take the next step and make your first change to the code.&lt;/p&gt;

&lt;p&gt;For this homework project, your task is simple:&lt;/p&gt;

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

&lt;p&gt;This is a small but important first step that shows you how changes in your code instantly reflect in the browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to Submit Your Solution&lt;/strong&gt;&lt;br&gt;
If you want to share your work or get feedback, you can share a screenshot of your finished project in the comments below. You can also paste your updated App.jsx code directly into the discussion to get feedback from me and the community.&lt;/p&gt;

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

&lt;p&gt;In our next article, we'll dive into the core of what makes React so powerful. We'll explore JSX, the special syntax that lets us write HTML-like code inside our JavaScript. Then, we'll use it to build our very first component and create our "Hello, World" program.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;p&gt;Official React Documentation: &lt;a href="https://react.dev/" rel="noopener noreferrer"&gt;react.dev&lt;/a&gt;&lt;br&gt;
MDN Javascript Documentation: &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript" rel="noopener noreferrer"&gt;developer.mozilla.org/JavaScript&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's Connect!
&lt;/h2&gt;

&lt;p&gt;If you found this article helpful, please consider following me on Dev.to. You can also connect with me on these platforms for more content and conversation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://www.linkedin.com/in/mariamendonca/" rel="noopener noreferrer"&gt;linkedin.com/in/mariamendonca/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/mendoncamaria" rel="noopener noreferrer"&gt;github.com/mendoncamaria&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;X: &lt;a href="https://x.com/mmendonca0610" rel="noopener noreferrer"&gt;@mmendonca0610&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See you in the next article! 👋&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>react</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Part 1: The Absolute Basics - Your Roadmap to Getting Started</title>
      <dc:creator>Maria Mendonca</dc:creator>
      <pubDate>Fri, 29 Aug 2025 12:30:00 +0000</pubDate>
      <link>https://dev.to/mendoncamaria/part-1-the-absolute-basics-your-roadmap-to-getting-started-56db</link>
      <guid>https://dev.to/mendoncamaria/part-1-the-absolute-basics-your-roadmap-to-getting-started-56db</guid>
      <description>&lt;p&gt;Welcome back! In our last post, I introduced myself and outlined the purpose of this series: to simplify React and guide you through the common pitfalls I faced. This article is our roadmap for &lt;strong&gt;Part 1: The Absolute Basics&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Roadmap for Part 1: The Absolute Basics
&lt;/h2&gt;

&lt;p&gt;This section will cover the essential building blocks of React, taking you from a complete beginner to someone who understands how to create and manage basic components.&lt;/p&gt;

&lt;p&gt;Here’s a look at what we'll be diving into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;React Fundamentals &amp;amp; Your First Program&lt;/strong&gt;. We’ll start with the very core of React and walk through writing your first program.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Parent-Child Relationships&lt;/strong&gt;. This is a crucial concept. We'll explore how components interact and share data with one another.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Evolution of React&lt;/strong&gt;. We'll look at how React has evolved from class-based to function-based components and why this change is so important.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Component Reusability&lt;/strong&gt;. Learn how to write flexible and reusable components to avoid repetitive code and make your applications more scalable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A Primer on the Component Lifecycle&lt;/strong&gt;. We'll get a foundational understanding of how components are created, updated, and destroyed. (Don't worry, we'll have an entire part dedicated to hooks later on!)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Debugging and Best Practices&lt;/strong&gt;. I'll share some of my favorite tips and tricks for debugging and writing clean, maintainable code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your First Coding Challenge&lt;/strong&gt;. We'll wrap up the section with a final project to test everything you've learned.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;h2&gt;
  
  
  What You Should Know Before We Start
&lt;/h2&gt;

&lt;p&gt;To get the most out of this series, you should have a basic understanding of &lt;strong&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML" rel="noopener noreferrer"&gt;HTML&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS" rel="noopener noreferrer"&gt;CSS&lt;/a&gt;&lt;/strong&gt;. A foundational knowledge of &lt;strong&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript" rel="noopener noreferrer"&gt;JavaScript&lt;/a&gt;&lt;/strong&gt; is also helpful, but not required, as we’ll cover the necessary concepts as we go.&lt;/p&gt;

&lt;h2&gt;
  
  
  How We'll Learn
&lt;/h2&gt;

&lt;p&gt;Each article will introduce a new concept, provide clear code examples, and include snippets you can easily copy and paste. At the end of each major concept, we'll build a &lt;strong&gt;mini-project&lt;/strong&gt; together. I'll also give you a separate mini-project as homework to practice your new skills. You'll be able to submit your solutions in the &lt;strong&gt;comments&lt;/strong&gt; for feedback.&lt;br&gt;
&lt;br&gt;&lt;br&gt;
The journey begins this Tuesday, where we'll dive into the core concepts of React, including why it's so popular and how to set up our first project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's Connect!
&lt;/h2&gt;

&lt;p&gt;If you're excited to begin your journey into the world of React, please consider following me on Dev.to. You can also connect with me on these platforms for more content and conversation as we go on this journey together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://www.linkedin.com/in/mariamendonca/" rel="noopener noreferrer"&gt;linkedin.com/in/mariamendonca/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/mendoncamaria" rel="noopener noreferrer"&gt;github.com/mendoncamaria&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;X: &lt;a href="https://x.com/mmendonca0610" rel="noopener noreferrer"&gt;@mmendonca0610&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>react</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Everything React: From Basics to Advanced - Introduction to the Series</title>
      <dc:creator>Maria Mendonca</dc:creator>
      <pubDate>Tue, 26 Aug 2025 06:30:00 +0000</pubDate>
      <link>https://dev.to/mendoncamaria/everything-react-from-basics-to-advanced-introduction-to-the-series-279n</link>
      <guid>https://dev.to/mendoncamaria/everything-react-from-basics-to-advanced-introduction-to-the-series-279n</guid>
      <description>&lt;p&gt;Hi everyone! My name is Maria Mendonca, and I've been a ReactJS Developer for three years. Over that time, I've faced my share of challenges and celebrated my share of victories. Now, I'm excited to share everything I've learned with you. I'm starting this series to be your personal guide, helping you navigate the world of React and overcome the same hurdles I once did.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I'm Creating This Tutorial Series
&lt;/h2&gt;

&lt;p&gt;There are countless React tutorials out there, but many can feel overwhelming or leave you stuck on a specific problem. I'm creating this series for two main reasons: to &lt;strong&gt;simplify complex concepts&lt;/strong&gt; and to help people who feel stuck. I'll be sharing not just the "how" but also the "why," including the common pitfalls I encountered and how I overcame them. My hope is that by sharing my personal journey, you'll feel less alone in your struggles and more empowered to push through them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbizf7w5wn3k1zpfh0xd9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbizf7w5wn3k1zpfh0xd9.png" alt="AI Generated React Logo" width="800" height="436"&gt;&lt;/a&gt;&lt;br&gt;
Image generated using Gemini&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Who Will Benefit from This Series?
&lt;/h2&gt;

&lt;p&gt;This series is for two types of people: students who are just starting their React journey and developers who want to refresh their knowledge. While knowing the basics of JavaScript is a bonus, it's not a requirement—we'll be starting from scratch. As we go, I encourage you to ask questions in the comments, and I'll do my best to help you solve them.&lt;/p&gt;

&lt;h2&gt;
  
  
  How We'll Learn Together
&lt;/h2&gt;

&lt;p&gt;This series is structured into six parts, with each part containing 7-8 articles. We'll progress from the &lt;strong&gt;basics to advanced concepts&lt;/strong&gt;, and along the way, I'll give you "food for thought"—small projects to help you practice what you've learned. By the end of each part, you'll feel more confident in your skills. We'll also have recap articles dedicated to solving common pitfalls, so you'll be well-equipped to handle real-world challenges. By the end of the entire series, you'll have a solid foundation in React and the confidence to build your own projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stay Tuned!
&lt;/h2&gt;

&lt;p&gt;The journey begins this Friday! Make sure to follow me here so you don't miss any updates. I'll be posting new articles every &lt;strong&gt;Tuesday at 12:00 PM IST&lt;/strong&gt; and &lt;strong&gt;Friday at 6:00 PM IST&lt;/strong&gt;. We'll also be revisiting previous concepts, answering frequently asked questions, and even sharing bonus articles on tech trends. Our first article, "&lt;strong&gt;The Basics, Part 1: Roadmap,&lt;/strong&gt;" is coming this Friday. I can't wait to start this journey with you!&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's Connect!
&lt;/h2&gt;

&lt;p&gt;If you're excited to begin your journey into the world of React, please consider following me on Dev.to. You can also connect with me on these platforms for more content and conversation as we go on this journey together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://www.linkedin.com/in/mariamendonca/" rel="noopener noreferrer"&gt;linkedin.com/in/mariamendonca/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/mendoncamaria" rel="noopener noreferrer"&gt;github.com/mendoncamaria&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;X: &lt;a href="https://x.com/mmendonca0610" rel="noopener noreferrer"&gt;@mmendonca0610&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>react</category>
      <category>beginners</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Hacktoberfest 2024 for Beginners: A Step-by-Step Guide</title>
      <dc:creator>Maria Mendonca</dc:creator>
      <pubDate>Mon, 07 Oct 2024 12:43:54 +0000</pubDate>
      <link>https://dev.to/mendoncamaria/hacktoberfest-2024-for-beginners-a-step-by-step-guide-3ek1</link>
      <guid>https://dev.to/mendoncamaria/hacktoberfest-2024-for-beginners-a-step-by-step-guide-3ek1</guid>
      <description>&lt;p&gt;Have you seen all the excitement around Hacktoberfest on social media? This annual event is a fantastic opportunity for developers of all levels, especially newcomers like myself, to jump into the world of open-source contributions.  Here's a quick guide to get you registered and ready to participate!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Useful Links:&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://hacktoberfest.com/" rel="noopener noreferrer"&gt;Hacktoberfest&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://about.gitlab.com/" rel="noopener noreferrer"&gt;Gitlab&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.com/invite/hacktoberfest" rel="noopener noreferrer"&gt;Hacktoberfest Discord Community&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Signing Up for Hacktoberfest&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;As a first-time participant, I found the registration process straightforward. Here's how to sign up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Head to the official Hacktoberfest website.&lt;/li&gt;
&lt;li&gt;Click on "Start Hacking" in the navigation bar.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flug8or564wmfdrrogbh5.png" alt="Navigation Register" width="800" height="326"&gt;
&lt;/li&gt;
&lt;li&gt;Alternatively, click on "Register" 
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fliiocbjddlcu4fbzf47u.png" alt="Body Register" width="800" height="326"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Choosing Your Authentication Method&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;After clicking "Start Hacking" or "Register," you'll be prompted to choose an authentication method to link your Hacktoberfest account. Both GitHub and GitLab are popular options for open-source contributions.&lt;br&gt;&lt;br&gt;
In this example, we'll use GitHub for authentication.&lt;br&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffh5tc4w36igwwczytjqk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffh5tc4w36igwwczytjqk.png" alt="Authentication" width="800" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Granting Access (Authorization)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Once you choose your authentication method (GitHub in this case), you'll be redirected to a secure authorization page from GitHub. This page asks your permission to allow Hacktoberfest to access your GitHub account information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why is this important?&lt;/strong&gt;  By granting access, Hacktoberfest can track your pull requests (contributions to open-source projects) during the event. These contributions will then be reflected in your Hacktoberfest profile, allowing you to see your progress towards earning the coveted Hacktoberfest badge!&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7q7msxczugn8vvlk27u4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7q7msxczugn8vvlk27u4.png" alt="Authorization" width="800" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Welcome to Your Hacktoberfest Profile!&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This section walks you through completing your Hacktoberfest profile, which acts as your central hub for the event. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmr3rdv5vo7qplae9d9ju.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmr3rdv5vo7qplae9d9ju.png" alt="Welcome" width="800" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's a breakdown of the information you'll provide:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4.1 Details Confirmation:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Review your name and email address:&lt;/strong&gt; Ensure these details match your preferred public identity and your linked account (GitHub/GitLab). You can choose to display your username or a different name. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgcw4hiikdtj61zh1jgni.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgcw4hiikdtj61zh1jgni.png" alt="Details Confirmation" width="800" height="165"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4.2 Experience Level (Optional):&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Share your experience with open-source contributions:&lt;/strong&gt; This section is optional, but it helps organizers understand the participant pool. Choose "Newbie" if this is your first time, "Familiar" for some experience, or "Experienced" if you're a seasoned contributor. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fja6dp6yvyi281extoo95.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fja6dp6yvyi281extoo95.png" alt=" " width="800" height="165"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4.3 Contribution Preferences (Optional):&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Showcase your skills beyond coding:&lt;/strong&gt; Hacktoberfest values all forms of contributions. You can contribute to code or no-code(Blogs, Video and Blog tutorials, Design documents, etc)&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4c2eng07glbqfmigiros.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4c2eng07glbqfmigiros.png" alt="Type of Contribution" width="800" height="165"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4.4 Student Status (Optional):&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Identify yourself as a student if applicable:&lt;/strong&gt; This information is optional but may be relevant for certain programs or resources offered during Hacktoberfest.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fza80b953qb76y9t190ug.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fza80b953qb76y9t190ug.png" alt="Student or no" width="800" height="112"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4.5 Primary Environment:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Tell us your role in the tech world:&lt;/strong&gt; Select your primary environment from a list that includes options like Developer, QA, Designer, and more. Choose "Others" if your role isn't listed, or "Prefer not to say" if you'd rather not share. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqmi6ri10ijyh0r5z5wl0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqmi6ri10ijyh0r5z5wl0.png" alt="Primary Environment" width="800" height="156"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4.6 Country of Participation:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Show your global presence:&lt;/strong&gt; Select your country from the provided list to represent your location during Hacktoberfest. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feumq9497hc0oekozpozd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feumq9497hc0oekozpozd.png" alt="country" width="800" height="156"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4.7 Marketing Opt-Ins (Optional):&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Choose your communication preferences:&lt;/strong&gt; Decide if you want to receive emails from Hacktoberfest's main sponsors (DigitalOcean, Quira, and Cloudflare). &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxff3obnab883x21pfqjx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxff3obnab883x21pfqjx.png" alt="marketing" width="800" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4.8 Terms and Conditions:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Review and agree to the terms:&lt;/strong&gt; Hacktoberfest has guidelines for participation. Ensure you've read and agree to the Terms and Conditions before submitting your profile details.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy05gq9ccdwf1qccf0uco.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy05gq9ccdwf1qccf0uco.png" alt="tnc" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4.9 Submit Your Profile:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Finalize your registration:&lt;/strong&gt; Once you've reviewed and confirmed all the information, click the submit button to complete your Hacktoberfest profile.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1awcdrvvdb5ldtv2jmd4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1awcdrvvdb5ldtv2jmd4.png" alt="submit" width="800" height="84"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congratulations! You're now officially registered for Hacktoberfest and ready to start exploring open-source projects and making your contributions.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Here are some additional points to consider adding to your Hacktoberfest 2024 sign-up guide:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Benefits of Participating:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gain valuable experience:&lt;/strong&gt; Contribute to real-world projects and learn new skills.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build your network:&lt;/strong&gt; Connect with other developers and mentors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Boost your resume:&lt;/strong&gt; Showcase your open-source contributions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Earn a Hacktoberfest badge:&lt;/strong&gt; Show off your participation and dedication.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Finding Suitable Projects:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Explore popular platforms:&lt;/strong&gt; GitHub, GitLab, and other open-source hosting platforms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use project search features:&lt;/strong&gt; Filter based on keywords, programming languages, or difficulty level.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Look for projects with "Hacktoberfest" labels:&lt;/strong&gt; These indicate projects that are actively welcoming contributions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Making Contributions:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Read the project's documentation carefully:&lt;/strong&gt; Understand the project's goals, guidelines, and expectations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask questions if needed:&lt;/strong&gt; Don't hesitate to reach out to project maintainers or other contributors for clarification.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Follow the project's coding style and conventions:&lt;/strong&gt; Adhere to the established guidelines to ensure your contributions are consistent with the project's overall quality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create a pull request:&lt;/strong&gt; Submit your changes for review by the project maintainers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Additional Tips:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Encourage readers to join the Hacktoberfest community:&lt;/strong&gt; Participate in discussions, ask questions, and support other contributors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mention any specific resources or tools that can be helpful:&lt;/strong&gt; For example, GitHub's "Issues" tab is a great place to find potential contribution opportunities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remind readers&lt;/strong&gt; to check the official Hacktoberfest website for updates and announcements.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
