Pure components re-render only when the props passed to the component changes. For example, if you have a pure child component inside a parent component state changes in the parent component will not re-render the child component unless the props passed to the child component change.
To create a pure component, you can use the memo
function from React. It is a higher order component which takes a component as an argument and returns a new component. The new component renders only if the props change.
import React, { memo } from 'react';
const ChildComponent = ({ name }) => {
console.log('Rendering child component');
return <div>{name}</div>;
};
const PureChildComponent = memo(ChildComponent);
const ParentComponent = () => {
const [count, setCount] = useState(0);
const [name, setName] = useState('John');
return (
<div>
<button onClick={() => setCount(count + 1)}>Count - {count}</button>
<button onClick={() => setName('Jane')}>Change name</button>
<PureChildComponent name={name} />
</div>
);
};