📜  ReactJS 常青 SideSheet 组件(1)

📅  最后修改于: 2023-12-03 15:19:46.110000             🧑  作者: Mango

ReactJS 常青 SideSheet 组件

SideSheet 组件是一种轻量级的 UI 组件,通常被用于创建弹出层或者抽屉式的页面布局。它在业界被用于很多 Web 应用程序中,也是 ReactJS 应用程序中常用的组件之一。

原理

SideSheet 组件通常由两个部分组成:遮罩和内部内容层。其中,遮罩层用于覆盖整个页面,从而创建出弹出层的效果;内部内容层则用于展示弹出层的内容。在 SideSheet 组件中,用户可以基于自己的需求来自定义这两个部分的样式和行为。

优势

与传统模态框相比,SideSheet 组件有以下优势:

  1. 更加灵活。与模态框不同,SideSheet 组件可以通过调整位置、宽度、高度、样式等属性来适应各种页面需求。

  2. 可自定义性更强。用户可以通过设置遮罩层和内部内容层的样式来改变外观和行为。

  3. 更好的交互性。用户可以自由拖拽或点击外部区域关闭弹出层。

  4. 可拓展性更强。作为常用的 UI 组件之一,SideSheet 组件有很多的开源组件库可用,帮助开发者快速集成各种功能。

示例

下面是一个基本的 SideSheet 组件示例:

import React, { useState } from 'react'
import './SideSheet.css'

export default function SideSheet() {
  const [visible, setVisible] = useState(false)

  const toggle = () => {
    setVisible(!visible)
  }

  return (
    <>
      <button onClick={toggle}>Open</button>
      <div
        className={`sidesheet ${visible ? 'open' : ''}`}
        onClick={() => setVisible(false)}
      >
        <div className="sidesheet-content">
          <h2>SideSheet Title</h2>
          <p>SideSheet Content</p>
        </div>
      </div>
    </>
  )
}
.sidesheet {
  position: fixed;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  z-index: -1;
  overflow: hidden;
  transition: all ease-in-out 0.2s;
}

.sidesheet.open {
  z-index: 9999;
}

.sidesheet-content {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background-color: #fff;
  width: 300px;
  padding: 20px;
  border-radius: 5px;
  box-shadow: rgba(0, 0, 0, 0.3) 0px 0px 10px;
}

button {
  background-color: #fff;
  border: 1px solid #ccc;
  padding: 5px 10px;
  border-radius: 5px;
}

在上面的示例中,我们通过 useState 钩子来控制 SideSheet 的可见性。当点击按钮时,setVisible 的状态值会变为 true,然后 SideSheet 组件就会显示出来。

在 SideSheet 组件中,我们使用了 onClick 事件来关闭弹出层。如果用户点击了弹出层的外部区域或者是遮罩层,就会触发 onClick 事件,然后将弹出层的 visible 属性设置为 false,从而关闭弹出层。

结语

SideSheet 组件是一款易于使用和高度可定制的 UI 组件。它被广泛使用于 Web 应用程序中,能够帮助使用者轻松创建不同种类的弹出层。由于其灵活性、可自定义性以及良好的交互性,它逐渐成为 ReactJS 应用程序中不可或缺的组件之一。