The useLayoutEffect works similarly to useEffect but rather working asynchronously like useEffect hook, it fires synchronously after all DOM loading is done loading. This is useful for synchronously re-rendering the DOM and also to read the layout from the DOM. But to prevent blocking the page loading, we should always use useEffect hook.
The useLayoutEffect hook works in the same phase as componentDidMount and componentDidUpdate methods. We should only use useLayoutEffect if useEffect isn’t outputting the expected result.
Syntax:
useLayoutEffect()
Creating React Application:
Step 1: Create a React application using the following command:
npx create-react-app functiondemo
Step 2: After creating your project folder i.e. functiondemo, move to it using the following command:
cd functiondemo
Project Structure: It will look like the following.
Example: In this example, we are going to build a name changer application that changes the name of the state when the useLayoutEffect hook is called.
App.js: Now write down the following code in the App.js file. Here, App is our default component where we have written our code.
Javascript
import React, { useLayoutEffect, useState } from 'react' ; const App = () => { const [value, setValue] = useState( 'GFG' ); useLayoutEffect(() => { if (value === 'GFG' ) { // Changing the state setValue( 'GeeksForGeeks' ); } console.log( 'UseLayoutEffect is called with the value of ' , value); }, [value]); return <div>{value} is the greatest portal for neveropen!</div>; }; export default App; |
Step to Run Application: Run the application using the following command from the root directory of the project:
npm start
Output: