1. Conditional Rendering
Use an if
statement or a ternary operator to control whether the component should be rendered:
{shouldRender && <MyComponent />}
or
{shouldRender ? <MyComponent /> : null}
2. Returning null
Inside the Component
If you want the component itself to decide whether it should render:
const MyComponent = ({ isVisible }) => { if (!isVisible) return null; return <div>Visible Content</div>; };
3. Using React.memo()
With Custom propsAreEqual
You can use React.memo()
to avoid re-rendering a component when props haven’t changed:
const MyComponent = React.memo((props) => { return <div>{props.data}</div>; }, (prevProps, nextProps) => { // return true to skip rendering return prevProps.data === nextProps.data; });
4. Using useEffect
to Control Side Effects, Not Rendering
While this doesn’t stop rendering directly, sometimes useEffect
is used to manage behavior that depends on render conditions:
useEffect(() => { if (!shouldRender) return; // Do something only if shouldRender is true }, [shouldRender]);
Guard Rendering by User Role, Auth, etc.
useEffect(() => { if (!shouldRender) return; // Do something only if shouldRender is true }, [shouldRender]);