Skip to content

Instantly share code, notes, and snippets.

@RodrigoNovais
Created May 15, 2021 18:41
Show Gist options
  • Save RodrigoNovais/c7f88761df2d6d725cfb34b230182e20 to your computer and use it in GitHub Desktop.
Save RodrigoNovais/c7f88761df2d6d725cfb34b230182e20 to your computer and use it in GitHub Desktop.
NextJS Portal Template
import React, { Fragment, useEffect, useState } from 'react';
import { createPortal } from 'react-dom';
const Portal: React.FC<{ selector: string }> = ({ children, selector }) => {
const [mounted, setMounted] = useState<boolean>(false);
useEffect(() => {
setMounted(true);
return () => setMounted(false);
}, [selector]);
if (mounted) return createPortal(children, document.querySelector(selector));
return <Fragment />;
};
export default Portal;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment