Creating Your Own React-Like Library and JSX Renderer

Creating Your Own React-Like Library and JSX Renderer

React has become the go-to library for building user interfaces, thanks to its simplicity and efficiency. In this blog post, we'll explore the basics of creating your own React-like library and JSX renderer using a simple example. By the end of this tutorial, you'll have a better understanding of how React works under the hood.

Setting Up the Project

Let's start by creating the necessary files for our project. Open your text editor and create two files: customreact.js for our custom React library and index.html as the entry point for our application.

customreact.js

customRender(reactElement, container) {
  const domElement = document.createElement(reactElement.type);
  domElement.innerHTML = reactElement.children;

  for (const prop in reactElement.props) {
    if (prop === "children") continue;
    domElement.setAttribute(prop, reactElement.props[prop]);
  }

  container.appendChild(domElement);
}

const reactElement = {
  type: "a",
  props: {
    href: "https://google.com",
    target: "_blank",
  },
  children: "Click me to visit Google",
};

const mainContainer = document.querySelector("#root");
customRender(reactElement, mainContainer);

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Custom React App</title>
  </head>
  <body>
    <div id="root"></div>
    <script src="./customreact.js"></script>
  </body>
</html>

Understanding the Custom React Library

Now, let's break down the key components of our customreact.js file.

customRender Function

The customRender function is our equivalent of React's rendering function. It takes a reactElement and a container as parameters. Inside the function:

  • We create a DOM element based on the type property of the reactElement.

  • Set the inner HTML of the created element to the children property.

  • Loop through the props of the reactElement and set attributes accordingly, skipping the "children" prop.

  • Finally, append the created element to the specified container.

reactElement Example

We define a simple reactElement representing an anchor (<a>) with specific props like href and target. The children property represents the text inside the anchor.

Rendering in mainContainer

We select the main container with the ID "root" using document.querySelector and then call our customRender function to render the reactElement inside the container.

Running the Application

To see our custom React library in action, open the index.html file in your web browser. You should observe a link with the specified properties rendering in the "root" container.

Congratulations! You've just created a simple React-like library and JSX renderer from scratch. This basic example provides a foundation for understanding how React works internally and can serve as a starting point for building more complex features in the future.