Example quiz: React
Back to examplesGenerated question
Entered response
Generated feedback
Strengths
- The answer mentions that the useEffect hook has a dependency array.
Suggestions
- The statement 'The useEffect hook and the useState hook do the same thing' is incorrect. The useEffect hook is used for side effects and lifecycle methods, while the useState hook is used for managing state.
- The answer could be improved by explaining what a dependency array is and how it affects the execution of the useEffect hook.
- The answer could provide an example of how to use the useEffect hook and how it differs from the useState hook in terms of syntax and functionality.
Example Answer
The purpose of React's useEffect hook is to handle side effects and lifecycle methods in functional components. It allows you to perform certain actions when a component renders, updates, or unmounts.
The useEffect hook differs from the useState hook in that it is not used for managing state directly. Instead, it focuses on executing code that is not directly related to the component's rendering.
The key difference between the two hooks is that the useEffect hook takes a dependency array as its second argument. This array specifies the values that the effect depends on, and whenever any of these values change, the effect is re-run. This allows you to control when the effect should be executed and avoid unnecessary re-renders.
Here's an example of using the useEffect hook to fetch data from an API when a component mounts:
import React, { useState, useEffect } from 'react';
function MyComponent() {
const [data, setData] = useState(null);
useEffect(() => {
fetchData();
}, []);
const fetchData = async () => {
const response = await fetch('https://api.example.com/data');
const jsonData = await response.json();
setData(jsonData);
};
return (
<div>
{data ? <p>{data}</p> : <p>Loading data...</p>}
</div>
);
}
In this example, the useEffect hook is used to fetch data from an API when the component mounts. The empty dependency array []
ensures that the effect runs only once, similar to how componentDidMount
works in class components.