enzostvs's picture
enzostvs HF staff
no-ssr component
17f8f56
raw
history blame
683 Bytes
"use client";
import { useEffect, useLayoutEffect, useState } from "react";
import PropTypes from "prop-types";
const useEnhancedEffect =
typeof window !== "undefined" && process.env.NODE_ENV !== "test"
? useLayoutEffect
: useEffect;
const NoSSR = ({
children,
defer = false,
fallback = null,
}: {
children: React.ReactNode;
defer?: boolean;
fallback?: React.ReactNode;
}) => {
const [isMounted, setMountedState] = useState(false);
useEnhancedEffect(() => {
if (!defer) setMountedState(true);
}, [defer]);
useEffect(() => {
if (defer) setMountedState(true);
}, [defer]);
return isMounted ? children : fallback;
};
export default NoSSR;