⚛
Conditionally render on the client or server
On this page
tsx
import React, { useEffect, useState, ReactNode } from 'react'export interface ConditionallyRenderProps {client?: booleanserver?: booleanchildren?: ReactNode}const ConditionallyRender = ({client,server,children,}: ConditionallyRenderProps) => {const [isMounted, setIsMounted] = useState(false)useEffect(() => setIsMounted(true), [])if (!isMounted && client) {return null}if (isMounted && server) {return null}return children as React.ReactElement}export default ConditionallyRender
Usage
tsx
<Layout><ConditionallyRender server><p>This is rendered only on server.</p></ConditionallyRender><ConditionallyRender client><p>This is rendered only on client.</p></ConditionallyRender></Layout>