Skip to content

Injection Provider ✨ (v0.5.0+)

在存在 Context/Provider 的情况下,获取当前节点上下文变得相当麻烦。而使用 useOverlayHolder 需要将 holder 放置到节点中,全局的 Provider 可以继承节点中的上下文,并批量渲染所有弹窗。

所以我们提供了以下的组件与钩子支持:

tsx
import { OverlaysProvider } from '@overlastic/react'

function Main() {
  return (
    <OverlaysProvider>
      <App />
    </OverlaysProvider>
  )
}
export default Main

在页面中通过 useOverlayInject 使用任意 Overlay Component:

tsx
import { useOverlayInject } from '@overlastic/react'
import CustomDialog from './Dialog.tsx'

function Page() {
  const openDialog = useOverlayInject(CustomDialog)
  async function onClick() {
    const resolved = await openDialog({ title: 'My Title' })
    console.log(resolved)
  }
  return (
    <button onClick={onClick}>
      Open Modal
    </button>
  )
}

export default Page

MIT Licensed