DEV Community

Mayuresh Surve
Mayuresh Surve

Posted on

πŸš€ Day 3: JSX and Components

On Day 3 of my React Learning Journey, I focused on understanding the basics of JSX, the differences between JSX and HTML, and how to create and use both functional and class components in React. Here's a summary of what I learned:

1. Understanding JSX

What is JSX?

  • JavaScript XML (JSX): JSX is a syntax extension for JavaScript that allows you to write HTML-like code within your JavaScript files. It makes writing React components more intuitive by allowing you to structure the UI components using HTML-like syntax.

Syntax and Usage

  • Embedding Expressions:

    • You can embed any JavaScript expression within curly braces {} in JSX.
    const name = "World";
    const element = <h1>Hello, {name}!</h1>;
    
  • Children:

    • JSX elements can contain children, including text, other elements, or a combination of both.
    const element = (
        <div>
            <h1>Hello, World!</h1>
            <p>This is a paragraph.</p>
        </div>
    );
    

Differences Between JSX and HTML

  • Attribute Naming:

    • JSX uses camelCase for attribute names (e.g., className instead of class, onClick instead of onclick).
  • Self-Closing Tags:

    • JSX requires self-closing tags for elements without children, such as <img /> or <input />.

2. Components

What are Components?

  • Building Blocks: Components are the building blocks of a React application. They allow you to split the UI into reusable and independent pieces.

  • Types of Components: There are two main types of components in React: Functional Components and Class Components.

Functional Components
  • Definition:

    • Functional components are JavaScript functions that return JSX.
    • They can accept props as arguments.
  • Example:

    function Welcome(props) {
        return <h1>Hello, {props.name}!</h1>;
    }
    
Class Components
  • Definition:

    • Class components are ES6 classes that extend React.Component.
    • They have a render() method that returns JSX.
  • Example:

    class Welcome extends React.Component {
        render() {
            return <h1>Hello, {this.props.name}!</h1>;
        }
    }
    
  • State and Lifecycle:

    • Class components can manage their own state and lifecycle methods.

3. Hands-On: Create Your First React Component

Step 1: Create a Functional Component

  1. Define the functional component:

    // src/Welcome.js
    
    import React from "react";
    
    function Welcome(props) {
        return <h1>Hello, {props.name}!</h1>;
    }
    
    export default Welcome;
    
  2. Use the component in App.js:

    // src/App.js
    
    import React from "react";
    import Welcome from "./Welcome";
    
    function App() {
        return (
            <div>
                <Welcome name="Alice" />
                <Welcome name="Bob" />
                <Welcome name="Charlie" />
            </div>
        );
    }
    
    export default App;
    
  3. Result:

    Output

Step 2: Create a Class Component

  1. Create a new file: In the src directory, create a new file called Greeting.js.

  2. Define the class component:

    // src/Greeting.js
    
    import React, { Component } from "react";
    
    class Greeting extends Component {
        render() {
            return <h1>Welcome, {this.props.name}!</h1>;
        }
    }
    
    export default Greeting;
    
  3. Use the component in App.js:

    // src/App.js
    
    import React from "react";
    import Greeting from "./Greeting";
    
    function App() {
        return (
            <div>
                <Greeting name="Diana" />
                <Greeting name="Edward" />
                <Greeting name="Fiona" />
            </div>
        );
    }
    
    export default App;
    
  4. Result:

    Output

4. Developer Profile Card Project

As a practice, I developed a Developer Profile Card to better understand the concepts.
You can find the code inside App.js file. This project helped reinforce my understanding of JSX, components, and props in React.

  • Developer Profile Card

    Developer Profile Card

Check out my GitHub for code samples and projects.

Image of Datadog

The Essential Toolkit for Front-end Developers

Take a user-centric approach to front-end monitoring that evolves alongside increasingly complex frameworks and single-page applications.

Get The Kit

Top comments (0)

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

πŸ‘‹ Kindness is contagious

Please leave a ❀️ or a friendly comment on this post if you found it helpful!

Okay