React is a free and open-source front-end JavaScript library for building user interfaces based on components. The main building blocks or components in React are:
1.Components
Components are the main building blocks in React. They are reusable pieces of code that represent a specific part of a UI. Components can be thought of as custom HTML tags that can be used in a React application. They can be functional or class-based.
Example of a functional component:
import React from 'react';
function Header(props) {
return (
<header>
<h1>{props.title}</h1>
</header>
);
}
export default Header;
In the example above, we have a functional component named Header
. It takes a title
prop and renders an h1
element with the prop value.
Example of a class-based component:
import React, { Component } from 'react';
class Counter extends Component {
constructor(props) {
super(props);
this.state = { count: 0 };
}
handleClick = () => {
this.setState({ count: this.state.count + 1 });
}
render() {
return (
<div>
<h1>Count: {this.state.count}</h1>
<button onClick={this.handleClick}>Increment</button>
</div>
);
}
}
export default Counter;
In the example above, we have a class-based component named Counter
. It has a state variable called count
and a method called handleClick
that increments the count when a button is clicked. The render
method returns a div
element that displays the count and a button that triggers the handleClick
method.
2.JSX
JSX stands for JavaScript XML. It is a syntax extension for JavaScript that allows developers to write HTML-like code in their JavaScript files. JSX makes it easier to create and manipulate React elements.
Example of a JSX element:
import React from 'react';
const element = <h1>Hello, world!</h1>;
export default element;
In the example above, we have a JSX element that renders an h1
element with the text "Hello, world!".
3.Props
Props are short for properties. They are used to pass data from a parent component to a child component. Props are read-only, which means they cannot be modified by the child component.
Example of passing props to a component:
import React from 'react';
import Header from './Header';
function App() {
return (
<div>
<Header title="Welcome to my app!" />
<p>This is the content of the app.</p>
</div>
);
}
export default App;
In the example above, we have a parent component named App
that renders a Header
component with a title
prop. The Header
component takes the prop value and renders an h1
element with the title.
4.State
A state is an object that stores data that can be modified by a component. When the state of a component changes, React will re-render the component.
Example of using state in a component
class Counter extends React.Component {
constructor(props) {
super(props);
this.state = { count: 0 };
}
handleClick = () => {
this.setState({ count: this.state.count + 1 });
}
render() {
return (
<div>
<h1>Count: {this.state.count}</h1>
<button onClick={this.handleClick}>Increment</button>
</div>
);
}
}
In the example above, we created a state variable called count
and a method called handleClick
that increments the count when a button is clicked. The render
method returns a div
element that displays the count and a button that triggers the handleClick
method.
5.Virtual DOM
The virtual DOM is a lightweight copy of the actual DOM. React uses the virtual DOM to keep track of changes to the UI and to optimize updates to the actual DOM. By using the virtual DOM, React can update the UI more efficiently and avoid unnecessary re-renders.
6. React DOM
React DOM is the library that allows React to interact with the actual DOM. It provides a way to render React components to the browser and handle user events.
7.Lifecycle methods
Lifecycle methods are special methods that are called at certain points in a component's lifecycle. They can be used to perform actions such as initializing the state, fetching data from an API, or updating the DOM.
By using these building blocks, developers can create complex user interfaces in a modular and maintainable way.