Preact Portal 使用教程

Preact Portal 使用教程

preact-portal:satellite: Render Preact components in (a) SPACE :milky_way: :stars:项目地址:https://gitcode.com/gh_mirrors/pr/preact-portal

项目介绍

Preact Portal 是一个用于在 DOM 树的任意位置渲染子组件的库。它是 Preact 生态系统中的一个重要组件,允许开发者将组件渲染到 DOM 中的任何位置,而不是仅仅局限于组件树的结构。这对于实现模态框、工具提示等 UI 元素非常有用。

项目快速启动

安装

首先,你需要安装 preactpreact-portal

npm install preact preact-portal

使用示例

以下是一个简单的示例,展示如何在 Preact 应用中使用 preact-portal

import { h, render } from 'preact';
import { Portal } from 'preact-portal';

function App() {
  return (
    <div>
      <h1>Hello, World!</h1>
      <Portal into="body">
        <div className="modal">
          This is a modal rendered outside the normal component tree!
        </div>
      </Portal>
    </div>
  );
}

render(<App />, document.body);

在这个示例中,<Portal> 组件将 div.modal 渲染到 body 元素中,而不是在 App 组件的 DOM 结构中。

应用案例和最佳实践

模态框

使用 preact-portal 可以轻松实现模态框,确保模态框始终位于页面的最顶层:

function Modal({ isOpen, onClose, children }) {
  if (!isOpen) return null;

  return (
    <Portal into="body">
      <div className="modal-overlay">
        <div className="modal-content">
          {children}
          <button onClick={onClose}>Close</button>
        </div>
      </div>
    </Portal>
  );
}

工具提示

工具提示是另一个常见的用例,可以使用 preact-portal 将工具提示渲染到页面的任意位置:

function Tooltip({ text, children }) {
  return (
    <div className="tooltip-container">
      {children}
      <Portal into="body">
        <div className="tooltip">{text}</div>
      </Portal>
    </div>
  );
}

典型生态项目

Preact Portal 是 Preact 生态系统的一部分,与以下项目紧密结合:

  • Preact: 一个快速、轻量级的 React 替代品。
  • Preact CLI: 用于快速创建 Preact 应用的命令行工具。
  • Preact Signals: 用于状态管理的库,与 Preact 无缝集成。

通过结合这些工具和库,开发者可以构建高效、模块化的前端应用。

preact-portal:satellite: Render Preact components in (a) SPACE :milky_way: :stars:项目地址:https://gitcode.com/gh_mirrors/pr/preact-portal

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马品向

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值