一个可调整大小的“antd”抽屉?

2023-12-24

我想提供一种方法来制作antd抽屉大小可以调整吗?

我读过一本流行的answer https://stackoverflow.com/questions/49469834/recommended-way-to-have-drawer-resizable专门针对material-ui/Drawer但我想做一些非常类似的事情antd.

有没有人有类似的antd例如 - 或者有更好的想法如何处理在抽屉一侧被切断的信息。


您可以扩展宽度Drawer通过指定它width道具。如果你不想扩展它但又希望内容仍然适合,你可以将宽度设置为bodyStyle支撑和使用overflow: "auto":

<Drawer
    title="Basic Drawer"
    placement="right"
    closable={false}
    visible={isDrawerVisible}
    bodyStyle={{
      width: 400,
      overflow: "auto"
    }}
    onClose={toggleDrawerVisible}
>

我还根据以下内容制作了一个可调整大小的抽屉link https://stackoverflow.com/questions/49469834/recommended-way-to-have-drawer-resizable您提供的antd版本(反应钩子版本答案)。

可调整大小的抽屉.jsx

import React, { useState, useEffect } from "react";
import { Drawer } from "antd";

let isResizing = null;

const ResizableDrawer = ({ children, ...props }) => {
  const [drawerWidth, setDrawerWidth] = useState(undefined);

  const cbHandleMouseMove = React.useCallback(handleMousemove, []);
  const cbHandleMouseUp = React.useCallback(handleMouseup, []);

  useEffect(() => {
    setDrawerWidth(props.width);
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, [props.visible]);

  function handleMouseup(e) {
    if (!isResizing) {
      return;
    }
    isResizing = false;
    document.removeEventListener("mousemove", cbHandleMouseMove);
    document.removeEventListener("mouseup", cbHandleMouseUp);
  }

  function handleMousedown(e) {
    e.stopPropagation();
    e.preventDefault();
    // we will only add listeners when needed, and remove them afterward
    document.addEventListener("mousemove", cbHandleMouseMove);
    document.addEventListener("mouseup", cbHandleMouseUp);
    isResizing = true;
  }

  function handleMousemove(e) {
    let offsetRight =
      document.body.offsetWidth - (e.clientX - document.body.offsetLeft);
    let minWidth = 256;
    let maxWidth = 600;
    if (offsetRight > minWidth && offsetRight < maxWidth) {
      setDrawerWidth(offsetRight);
    }
  }

  return (
    <Drawer {...props} width={drawerWidth}>
      <div className="sidebar-dragger" onMouseDown={handleMousedown} />
      {children}
    </Drawer>
  );
};

export default ResizableDrawer;

并使用它:

import ResizableDrawer from "./ResizableDrawer";

<ResizableDrawer
    title="Resizable Drawer"
    placement="right"
    closable={false}
    visible={isResizableDrawerVisible}
    onClose={toggleResizableDrawerVisible}
>
    ...
</ResizableDrawer>

请参阅此处的工作演示:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一个可调整大小的“antd”抽屉? 的相关文章

  • React中如何触发同级组件的函数?

    I am new to front end world and could not figure out how to trigger a function from a sibling component Lets say I have
  • 在 React 中使用 .less 文件

    我正在尝试将 less 文件与极简主义 React 应用程序一起使用 使用创建反应应用程序 我已经添加less and less loader to my 包 json以及我的模块规则webpack config js文件 然而 类引用并未
  • 在 React Web 应用程序中使用 createjs-soundjs

    我想用https www npmjs com package createjs soundjs https www npmjs com package createjs soundjs在 React Web 应用程序上播放声音 我正常安装了
  • Redux 减速器的副作用

    Redux 减速器应该没有副作用 但是 如果某个操作应该触发浏览器中文件的下载 其中内容基于商店的状态 该怎么办 这当然应该算作副作用吗 像下面这样的方法可以吗 还是我应该寻找替代方法 case SAVE GRID const json s
  • Jest - 模拟函数,从另一个文件导入

    测试的文件使用从另一个文件导入的函数 import myFunc from myFile 如何在该文件的测试中模拟该函数的返回值 我正在使用笑话 这对我有用 我不确定这是否是一个好的做法 import as myFile from myFi
  • React 应用程序中未调用 Microsoft Graph Toolkit 组件的事件处理程序

    我正在尝试在我的 React 应用程序中使用 Microsoft Graph Toolkit 中的登录组件 它工作得很好 但我似乎无法让任何事件发生 例如 import React from react import MgtLogin Pr
  • 从输入类型编号获取无效值

    我正在使用输入类型数字 当它无效时 我如何从中获取值 例如 使用类型编号并仅打印 e 这本身是无效的 我正在使用 React 但我认为这个问题非常普遍 onChange event console log event target valu
  • 以编程方式更改 Redux-Form 字段值

    当我使用redux formv7 我发现没有办法设置字段值 现在在我的form 我有两个select成分 当第一个时 第二个的值就会很清楚select元件值改变 在类渲染中 div div site div div div div
  • ReactJS 子级 - 过滤掉空值

    我正在渲染我的组件
  • 如何删除 Material React Modal 中的蓝色边框?

    我正在用这个反应材料模态 https material ui com pt components modal 在演示示例中 您可以看到当您打开模式时 有一个蓝色边框 有办法去掉吗 我在 Modal Api 中看到具有该属性disableAu
  • 为什么我的反应路由器链接将我带到页面中间?

    我的网站上有很多链接 但只有一个可以执行此操作 它没有将我带到导航栏的顶部 而是转到内容的中间 知道为什么会这样吗 这是一个页面 其中有一个 map经历一些JSON 这是渲染div页面下方的文本元素 如果重要的话 这是一些可能相关的代码 路
  • 从旧的外部 Javascript 更改 React 组件的状态?

    如何从旧的 jQuery soup 中更改 React 组件的状态 代码 我有一个这样的组件 var AComponent React createClass getInitialState function return ids rend
  • 在react-big-calendar中单击事件时添加弹出窗口?

    当单击事件时 我无法将弹出窗口添加到事件中 弹出窗口似乎只显示在事件槽中 而不是显示在事件槽的顶部 此外 由于我为事件创建了一个自定义组件并尝试在自定义组件中实现弹出窗口 因此只有当我单击事件名称时才会显示弹出窗口 这是代码 class C
  • 使用代理时,React 应用程序正在不同位置查找静态文件

    我用过npx create react app my app创建一个反应应用程序 我用过的npm run build构建应用程序并使用它进行部署serve s build 我正在使用代理服务器来公开我的应用程序 我的 httpd 配置如下所
  • React 应用程序中的 addEventListener 不起作用

    一些背景 我正在尝试消费自定义网络组件在 React 应用程序中并尝试监听来自 Web 组件的事件 我相信您不能只在自定义 Web 组件上以通常的反应方式处理事件 i e
  • ReactCSSTransitionGroup 组件WillLeave 未调用

    我尝试使用 ReactCssTransition 但不知何故该事件没有被调用 componentWillLeave 这是我的组件 import React Component from react import TransitionGrou
  • 如何在 React 中测试表单提交?

    我有以下 React 组件 export default class SignUpForm extends React Component doSignupForm event Some API call render return div
  • React PropTypes 与 Flow

    PropTypes 和 Flow 涵盖相似的内容 但使用不同的方法 PropTypes 可以在运行时向您发出警告 这有助于快速找到来自服务器等的格式错误的响应 但是 Flow 似乎是未来 并且具有泛型等概念 是一个非常灵活的解决方案 Nuc
  • 如何在React中的Material-UI选择框中设置默认值?

    我在用选择框 https material ui com demos selects 来自材料用户界面 我想显示默认选择的 选择值 选项 但之后用户无法选择此选项
  • 如何使用 Antd / Less 和 Sass / CSS 模块配置 Next.js

    我想用Next js https nextjs org 带有 Sass 和 CSS 模块但也想使用蚂蚁设计 https ant design 并希望对较小的建筑尺寸使用 Less 样式 我可以启用 CSS 模块或 Less 加载器 但不能同

随机推荐

  • 陷入函数和布尔值的困境

    我有一个名为firstRun 其中我有两个定义的布尔值filesDeleted and dirsDeleted 也在函数里面我有if filesDeleted true dirsDeleted true 当我尝试调试应用程序时出现错误 Us
  • LINQ 内连接

    我有两个收藏 List
  • magento 肥皂 api v2 目录产品信息不工作

    当我如下调用api函数时 我收到以下错误 我确信所有传递的变量都设置正确 因为其他 magento api 函数工作得很好 产品不存在 错误 发生内部错误 我假设这是调用语法的错误 我找不到正确的调用示例目录产品信息使用 sku 而不是产品
  • Sugar ORM Android 具有多个数据库

    我正在尝试为具有多个数据库的多个用户创建一个应用程序 每次用户登录时 应用程序都会选择特定用户的数据库并从中获取值 是否可以使用 Sugar ORM 来实现它 因为在 Sugar ORM 中 我们只能在清单中指定一个数据库
  • 如何垂直对齐段落中的文本?

    我想知道如何对齐文本p元素垂直居中 这是我的风格 p event desc font bold 12px Helvetica Neue Helvetica Arial sans serif line height 14px height 3
  • Pygame碰撞代码

    首先 我必须说我是法国人 这样你就明白为什么我会犯所有这些错误 哈哈 我正在使用 python pygame 和 pymunk 开发一个物理游戏 一个球 我称之为 X 必须到达 Y 点 这是一款平台游戏 2d 游戏 为了帮助球到达 Y 点
  • 服务器端 d3 - 将 SVG 编码为 Base64 图像

    我正在尝试将 D3 图表编码为 base64 图像以在 HTML 电子邮件中使用 到目前为止我有 var express require express var app express var jsdom require jsdom app
  • 教程中发现 TensorFlow 错误

    我还敢问吗 目前这是一项新技术 我找不到解决这个看似简单的错误的方法 我要学习的教程可以在这里找到 http www tensorflow org tutorials mnist pros index html deep mnist for
  • 删除沙盒

    我还有一个关于应用程序沙箱的问题 所以我需要访问用户的主目录 同时应用程序应该能够关闭 Mac 这要求不使用沙箱 我的问题是我不知道如何删除沙箱以及如何将应用程序提交到 Mac App Store 我认为档案是沙盒的 因为我曾经打开过它一次
  • pycurl 和 SSL 证书

    我正在尝试编写 pycurl 脚本来访问安全站点 HTTPS c pycurl Curl c setopt pycurl USERAGENT Mozilla 5 0 Windows NT 6 1 WOW64 rv 8 0 Gecko 201
  • 共享主机上 OpenWebConfiguration 的 ASP.NET 安全异常

    将我的网站从本地开发环境移动到共享主机后 我得到 Security Exception Description The application attempted to perform an operation not allowed by
  • 如何在 OCaml 编译器中遍历类型化抽象语法树

    我正在尝试转储 OCaml 项目中所有标识符的类型信息 基本上与遍历类型化抽象语法树相同 https github com ocaml ocaml blob trunk typing typedtree mli https github c
  • 当前迭代是否有 TFS 查询宏?

    VS2010 中的 TFS 是否有一种方法可以指定特定迭代是当前迭代 然后返回该迭代以在类似于以下方式的查询中使用 Project作品 如果没有 是否有办法在 TFS 工作项查询中执行子查询 看起来微软听了 CurrentIteration
  • 刷新一下桌面

    我想刷新一个可操作的网格 我有一些列 其中的下拉列表填充了数据库的数据 但在我的页面中 我有一个第一个网格 它在该数据库中插入数据 然后我在第二个网格中获取它们 但由于我的第二个网格没有刷新 我无法获取刚刚插入第一个网格的最后一个值 那么我
  • 将联系人从 gmail/hotmail/yahoo 导入到 php

    我想将联系人从 gmail hotmail yahoo 导入到我的 php 应用程序 就像在社交网络中找到的那样 我已经读过 gmail 是如何做到这一点的 但我仍然不太清楚 它说我需要像这样做一个http请求https www opens
  • ValueError:使用 numpy 设置带有序列的数组元素

    我在 python 中有这段代码 data np empty temp shape maxlat temp shape 0 maxlon temp shape 1 print maxlat maxlon for i in range 0 m
  • 如何将 MySQL 数据库结构导出到 Excel 文件?

    有没有工具可以将 MySQL 数据库结构导出到 Excel 文件 例如 1 ID int 10 not null pri 0 index comment 谢谢你的帮助 这是一个更简单的方法 从 phpMyAdmin 中 选择您的数据库 然后
  • NSNumberFormatter 四舍五入到负零

    I m using NSNumberFormatter to format float values as integer strings i e omitting the fractional part I find it odd tha
  • sass可以转换为css,但不能与watch命令一起使用

    大家好 我是SASS初学者 刚刚开始学习Sass 所以 这个问题对某些人来说可能看起来很荒谬 在这里 我得到了 style scss myColor 009a82 myString some text here myFontSize 13p
  • 一个可调整大小的“antd”抽屉?

    我想提供一种方法来制作antd抽屉大小可以调整吗 我读过一本流行的answer https stackoverflow com questions 49469834 recommended way to have drawer resiza