gpt4 book ai didi

reactjs - 可调整大小的 `antd` 抽屉?

转载 作者:行者123 更新时间:2023-12-02 16:25:59 36 4
gpt4 key购买 nike

我想提供一种使 antd 抽屉可调整大小的方法?

我读了一篇热门answer专门针对 material-ui/Drawer 但我希望用 antd 做一些非常相似的事情。

有没有人有类似的 antd 示例 - 或者有更好的想法如何处理在抽屉边被砍掉的信息。

最佳答案

您可以通过在 width 属性上指定它来扩展 Drawer 的宽度。如果你不想扩展它但你希望内容仍然适合,你可以在 bodyStyle 属性上设置宽度并使用 overflow: "auto":

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

我还根据 link 制作了一个可调整大小的抽屉您在 antd 版本中提供的( react Hook 版本答案)。

ResizableDrawer.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>

在此处查看工作演示:

Edit

关于reactjs - 可调整大小的 `antd` 抽屉?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64528646/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com