React partals with hooks
yarn add @react-cmpt/use-portal
options | type | default | explain |
---|---|---|---|
initialAppend | boolean | true | Whether to append the child node in the mounted state |
attrName | string | "react-cmpt-container" | setAttribute qualifiedName |
attrValue | string | "" | setAttribute value |
getRootContainer | function | () => document.body | To set the container |
return | type | explain |
---|---|---|
getChild | function | Callback for obtaining the current container mount child node. |
getContainer | function | Callback for obtaining the container element. |
appendChild | function | Manually append the child node. (Default current node) |
removeChild | function | Manually remove the child node. (Default current node) |
import { usePortal } from "@react-cmpt/use-portal"; const App = () => { const { getChild, getContainer, appendChild, removeChild } = usePortal(); };
props | type | default | explain |
---|---|---|---|
attrName | string | "react-cmpt-container" | setAttribute qualifiedName |
attrValue | string | "" | setAttribute value |
portalKey | string | undefined | createPortal key |
getRootContainer | function | () => document.body | To set the container |
import { Portal } from "@react-cmpt/use-portal"; const App = () => { return ( <Portal> <span>{"hello"}</span> </Portal> ); };
options | type | default | explain |
---|---|---|---|
defaultVisiable | boolean | false | initial visiable value |
attrName | string | "react-cmpt-container" | setAttribute qualifiedName |
attrValue | string | "" | setAttribute value |
portalKey | string | undefined | createPortal key |
getRootContainer | function | () => document.body | To set the container |
return | type | explain |
---|---|---|
Portal | React.ReactNode | Portal holder |
visiable | boolean | Whether the element is visible |
onShow | function | Show trigger event |
onClose | function | Hide trigger event |
getChild | function | Callback for obtaining the current container mount child node. |
getContainer | function | Callback for obtaining the container element. |
import { useEventPortal } from "@react-cmpt/use-portal"; const App = () => { const { Portal, visiable, onShow, onClose, getChild, getContainer, } = useEventPortal({}); return ( <Portal> <span>{"hello"}</span> </Portal> ); };
# example yarn example # build package yarn build # tests yarn test