Portal
Portal
は、現在のDOM
階層の外側に要素をレンダリングするコンポーネントです。
インポート
import { Portal } from "@yamada-ui/react"
使い方
Portal
は、要素を別のDOM
階層へ転送します。デフォルトでは、document.body
の終わりに転送します。これは、親要素のスタイルや非表示の影響を防ぐのに便利です。
編集可能な例
<Box bg="primary" color="white"> This is Box <Portal>This text is portaled at the end of document.body</Portal> </Box>
転送先を変更する
転送先を変更する場合は、containerRef
に転送先のref
を設定します。デフォルトでは、document.body
の終わりに転送します。
編集可能な例
const containerRef = useRef<HTMLDivElement>(null) return ( <Box bg="primary" color="white"> This is Box <Portal containerRef={containerRef}> This text is portaled at the Container </Portal> <Box ref={containerRef} bg="secondary" color="white"> This is Container </Box> </Box> )
ネストされたポータル
ネストしたPortal
コンポーネントは、親のPortal
コンポーネントを追従します。
編集可能な例
const containerRef = useRef<HTMLDivElement>(null) return ( <> <Portal containerRef={containerRef}> <Box bg="primary" color="white"> This text is portaled at the Container <Portal>This text is attached to parent portal</Portal> </Box> </Portal> <Box ref={containerRef} bg="secondary" color="white"> This is Container </Box> </> )
ネストしたポータルの転送先を変更する
ネストしたPortal
コンポーネントは、親のPortal
コンポーネントを追従します。もし、親要素のPortal
コンポーネントの追従を無効にしたい場合は、appendToParentPortal
をfalse
に設定します。
編集可能な例
const containerRef = useRef<HTMLDivElement>(null) return ( <> <Portal containerRef={containerRef}> <Box bg="primary" color="white"> This text is portaled at the Container <Portal appendToParentPortal={false}> This text is portaled at the end of document.body </Portal> </Box> </Portal> <Box ref={containerRef} bg="secondary" color="white"> This is Container </Box> </> )
GitHubでこのページを編集する