React Tutorial ( Documentation Breakdown)
Part-I ( INSTALLATION SETUP, PROJECT STRUCTURE AND REACTDOM )
What is React and why choose React over other web frameworks ?
React is an open-source JavaScript library for building user interfaces (UIs). It was developed by Facebook and is widely used to create interactive and dynamic web applications. React follows a component-based approach, where UIs are divided into reusable and self-contained components. It utilizes a virtual DOM (Document Object Model) and efficiently updates only the necessary parts of the UI, resulting in improved performance.
Here are some key reasons why React is widely used and appreciated by developers:
Component-based Architecture: React promotes the development of UIs using reusable and modular components. Components encapsulate their own logic, state, and UI rendering, making it easier to build complex applications and reuse components across different parts of the application.
Virtual DOM: React utilizes a virtual representation of the DOM, which is an in-memory representation of the UI. When there are changes in the component's state or props, React calculates the minimal number of changes needed in the virtual DOM and efficiently updates the real DOM. This approach minimizes direct manipulations of the actual DOM, resulting in faster and more efficient rendering.
Declarative Syntax: React uses a declarative syntax, allowing developers to describe the desired UI state rather than focusing on imperative DOM manipulation. With React, you specify how your UI should look at any given state, and React takes care of updating the UI to match that state.
One-way Data Flow: React follows a unidirectional data flow, where data is passed down from parent components to child components via props. This ensures predictable and maintainable code, as data flows in a single direction, making it easier to understand how changes in state affect the UI.
Rich Ecosystem and Community: React has a vibrant ecosystem with a vast collection of libraries, tools, and resources. It is backed by a large and active community of developers who contribute to its growth, share knowledge, and provide support.
Cross-platform Development: React can be used to build applications not only for the web but also for other platforms like mobile (React Native) and desktop (Electron). This allows developers to leverage their existing knowledge and codebase to build applications across multiple platforms.
Performance Optimization: React's virtual DOM and efficient diffing algorithm help optimize performance by minimizing unnecessary DOM updates. React also provides tools like memoization, shouldComponentUpdate, and PureComponent to further optimize rendering and prevent unnecessary re-renders.
Testability: React's component-based structure and separation of concerns make it easier to write unit tests for individual components. React's testing utilities and libraries like Jest enable developers to write comprehensive test suites and ensure the reliability and stability of their applications.
## Setting up your first react app
To set up a React app, you'll need to follow these steps:
Install Node.js and npm: Make sure you have Node.js installed on your computer. Node.js includes npm (Node Package Manager), which is used to manage dependencies and packages for your React app. You can download Node.js from the official website: nodejs.org
Create a New React Project: Open your terminal or command prompt and navigate to the directory where you want to create your React app. Use the following command to create a new React project using Create React App:
npx create-react-app my-app
Replace "my-app" with the desired name for your project. This command sets up a new React project with the necessary configurations and dependencies.
Navigate to the Project Directory: After the project is created, navigate into the project directory using the following command:
cd my-app
Replace "my-app" with the name of your project.
Start the Development Server: Once you're inside the project directory, you can start the development server by running the following command:
npm start
This command will compile your React code and launch a local development server. By default, your app will be accessible at
http://localhost:3000
. The development server will automatically reload your app whenever you make changes to the code.Customize and Build Your App: With the development server running, you can start customizing your React app. The entry point for your app is the
src/index.js
file, where you can begin building your components and defining the structure of your app. You can modify the code in thesrc
directory as per your project requirements.Add Dependencies and Packages: If your app requires additional dependencies or packages, you can install them using npm. For example, if you need a library like React Router, you can run the following command to install it:
npm install react-router-dom
Replace
react-router-dom
with the name of the package you want to install.Build and Deploy: Once you have developed your React app and are ready to deploy it, you can build a production-ready bundle. Use the following command:
npm run build
This command generates an optimized and minified build of your app in the
build
directory. You can then deploy the contents of thebuild
directory to a web server or a hosting platform of your choice.
That's it! You have successfully set up a React app. Now you can start developing your components, defining routes, and implementing the desired functionality for your application.
## Using Build tools to create React app
Vite is a build tool that aims to provide a faster and more efficient development experience for modern web projects. It is particularly well-suited for building React applications. Vite achieves faster development and build times by utilizing native ES modules in modern browsers during development, instead of bundling the entire application.
To create a React app using Vite, you can follow these steps:
Install Node.js and npm: Make sure you have Node.js installed on your computer. Node.js includes npm (Node Package Manager), which is used to manage dependencies and packages for your project. You can download Node.js from the official website: nodejs.org
Install Vite: Open your terminal or command prompt and run the following command to install Vite globally:
npm install -g create-vite
Create a new React project with Vite: In your terminal, navigate to the directory where you want to create your React app. Then run the following command to generate a new project using Vite:
create-vite my-app --template react
Replace "my-app" with the desired name for your project.
Navigate to the Project Directory: After the project is created, navigate into the project directory using the following command:
cd my-app
Replace "my-app" with the name of your project.
Start the Development Server: Once you're inside the project directory, you can start the development server by running the following command:
npm run dev
This command will compile your React code using Vite and launch a local development server. By default, your app will be accessible at
http://localhost:3000
. The development server will automatically reload your app whenever you make changes to the code.Customize and Build Your App: With the development server running, you can start customizing your React app. The entry point for your app is the
src/main.jsx
file, where you can begin building your components and defining the structure of your app. You can modify the code in thesrc
directory as per your project requirements.Add Dependencies and Packages: If your app requires additional dependencies or packages, you can install them using npm. For example, if you need a library like React Router, you can run the following command to install it:
npm install react-router-dom
Replace
react-router-dom
with the name of the package you want to install.Build and Deploy: Once you have developed your React app and are ready to deploy it, you can build a production-ready bundle. Use the following command:
npm run build
This command generates an optimized and minified build of your app in the
dist
directory. You can then deploy the contents of thedist
directory to a web server or a hosting platform of your choice.
By using Vite with React, you can take advantage of the fast development and build times it offers, making your React development experience even more efficient.
## What is React-Dom and project structure of React
React DOM is a package that provides the integration between React and the Document Object Model (DOM). It serves as the bridge that allows React components to be rendered and updated in the browser. React DOM provides methods for manipulating the DOM, such as rendering React components, updating them when state or props change, and handling events.
In a typical React project, the project structure is organized to keep the code modular and maintainable. While there can be variations depending on personal preference and project requirements, here's a common project structure in a React application:
cssCopy codemy-app/
├── node_modules/
├── public/
│ ├── index.html
│ ├── favicon.ico
│ └── ...
├── src/
│ ├── index.js
│ ├── App.js
│ ├── components/
│ │ ├── Header.js
│ │ ├── Footer.js
│ │ └── ...
│ ├── pages/
│ │ ├── Home.js
│ │ ├── About.js
│ │ └── ...
│ ├── assets/
│ │ ├── images/
│ │ ├── styles/
│ │ └── ...
│ └── ...
├── package.json
├── package-lock.json
├── README.md
└── ...
Let's go through each component of the project structure:
node_modules/
: This directory contains all the installed dependencies and packages managed by npm.public/
: Thepublic
directory contains static files that are publicly accessible. It typically includes anindex.html
file, which serves as the entry point of your application. Other assets like images, icons, and fonts can also be placed here.src/
: Thesrc
directory is where the majority of your application code resides. It contains the source files that make up your React application.index.js
: Theindex.js
file serves as the entry point for your React application. It is responsible for rendering the root component of your application into the DOM usingReactDOM.render()
.App.js
: TheApp.js
file represents the main component of your application. It typically serves as a container for other components and manages the overall structure and layout of your app.components/
: Thecomponents
directory holds reusable UI components that can be used across different parts of your application. Each component typically resides in its own file.pages/
: Thepages
directory contains components that represent different pages or views of your application. Each page typically consists of a combination of UI components and serves as a route endpoint.assets/
: Theassets
directory stores static assets like images, stylesheets, and other resources used in your application.package.json
andpackage-lock.json
: These files store metadata about your project and the installed dependencies. They also define scripts, project configuration, and other metadata.README.md
: The README file typically provides an overview of your project, including installation instructions, usage guidelines, and any other relevant information.