Table of Contents
- ReactJS Concepts
- Components
- State Management
- Props
- Hooks
- Lifecycle Methods
- Virtual DOM
- JSX
- Event Handling
- Error Handling
ReactJS Concepts
ReactJS is a popular JavaScript library for building user interfaces. It follows a component-based architecture and utilizes a virtual DOM for efficient rendering. ReactJS allows developers to create reusable UI components, manage application state, and efficiently update the UI based on changes in data.
Components
In ReactJS, components are the building blocks of the UI. They can be either functional components or class-based components. Functional components are simpler and are used when state and lifecycle methods are not required. Class-based components, on the other hand, can have state and lifecycle methods.
Example of a functional component:
const HelloWorld = () => {
return <div>Hello, World!</div>;
};
Example of a class-based component:
class Welcome extends React.Component {
render() {
return <div>Welcome to ReactJS!</div>;
}
}
State Management
State management in ReactJS involves storing and updating data within a component. State can be initialized in the constructor and updated using the setState
method. State changes trigger a re-render of the component.
Example of state management in a class-based component:
class Counter extends React.Component {
constructor(props) {
super(props);
this.state = {
count: 0,
};
}
incrementCount() {
this.setState({ count: this.state.count + 1 });
}
render() {
return (
<div>
<p>Count: {this.state.count}</p>
<button onClick={() => this.incrementCount()}>Increment</button>
</div>
);
}
}
Props
Props are used to pass data from a parent component to a child component. They are read-only and cannot be modified by the child component. Props help in creating reusable components and passing dynamic values.
Example of using props in a functional component:
const DisplayMessage = (props) => {
return <div>{props.message}</div>;
};
const App = () => {
return <DisplayMessage message="Hello, World!" />;
};
Hooks
Hooks are a new addition to ReactJS and allow functional components to have state and lifecycle methods. They provide a way to use features like state and context within a functional component.
Example of using the useState
hook for managing state:
import React, { useState } from "react";
const Counter = () => {
const [count, setCount] = useState(0);
const incrementCount = () => {
setCount(count + 1);
};
return (
<div>
<p>Count: {count}</p>
<button onClick={incrementCount}>Increment</button>
</div>
);
};
Lifecycle Methods
Lifecycle methods are methods that are invoked at different stages of a component’s lifecycle. They are useful for performing tasks such as fetching data, updating the UI, and cleaning up resources.
Example of using the componentDidMount
lifecycle method:
class App extends React.Component {
componentDidMount() {
// Fetch data from an API
fetch("https://api.example.com/data")
.then((response) => response.json())
.then((data) => {
// Update component state with fetched data
this.setState({ data });
});
}
render() {
return <div>Data is being fetched...</div>;
}
}
Virtual DOM
ReactJS utilizes a virtual DOM to efficiently update the UI. The virtual DOM is a lightweight copy of the actual DOM, and React performs a diffing algorithm to determine the minimal number of changes required to update the UI.
JSX
JSX is a syntax extension for JavaScript that allows you to write HTML-like syntax in your JavaScript code. It enables you to create React elements in a more declarative and intuitive way.
Example of rendering JSX elements:
const element = <h1>Hello, World!</h1>;
ReactDOM.render(element, document.getElementById("root"));
Event Handling
ReactJS provides a simple and consistent way to handle events. Event handlers can be defined inline or as separate functions. When an event occurs, React will invoke the specified event handler.
Example of handling a button click event:
class App extends React.Component {
handleClick() {
console.log("Button clicked");
}
render() {
return <button onClick={this.handleClick}>Click Me</button>;
}
}
Error Handling
In ReactJS, error boundaries are used to catch and handle errors that occur during rendering, in lifecycle methods, or in constructors of the whole tree below them. Error boundaries are implemented using the componentDidCatch
lifecycle method.
Example of implementing an error boundary:
class ErrorBoundary extends React.Component {
constructor(props) {
super(props);
this.state = { hasError: false };
}
componentDidCatch(error, info) {
console.error(error);
this.setState({ hasError: true });
}
render() {
if (this.state.hasError) {
return <div>Oops! Something went wrong.</div>;
}
return this.props.children;
}
}
With this ReactJS interview cheatsheet, you’ll be able to confidently tackle common interview questions and provide well-rounded answers with clear code examples. Make sure to practice implementing these concepts to gain hands-on experience and solidify your understanding. Good luck with your ReactJS interview!