Antd Design 中 Drawer 组件如何设置渲染在自定义的 dom 或者 div中,而不是全局 body

最近有一个关于聊天监控的项目,有一个需求是展示聊天消息的上下文,我想使用抽屉组件Drawer实现功能,采用antd design。

想法是点击查看上下文按钮,弹出一个抽屉组件,这个抽屉的出现区域为该界面写好的div中,而不是整个界面的body。

了解了很久,得出结论:

首先:设置一个属性getContainer,这个是Drawer组件的属性,设置为false,getContainer属性允许我们指定组件应该渲染到哪个容器上,具体含义可以自己查询。

其次:在该抽屉的父级容器设置样式为position: relative,也就是将你所要把抽屉组件自定义到的那个div中的style设置为position: relative。

最后:抽屉组件本身设置一个定位 position: absolute。

这样就实现了抽屉组件的自定义位置设置。以下是实现代码,使用Ant Design 中的代码做了点修改。

import { Button, Drawer } from 'antd';
import React, { useState } from 'react';

const App: React.FC = () => {
  const [open, setOpen] = useState(false);

  const showDrawer = () => {
    setOpen(true);
  };

  const onClose = () => {
    setOpen(false);
  };

  return (
    <div style{{ position: relative, overflow: hidden;}}>
      Render in this
      <div style={{ marginTop: 16 }}>
        <Button type="primary" onClick={showDrawer}>
          Open
        </Button>
      </div>
      <Drawer
        title="Basic Drawer"
        placement="right"
        closable={false}
        onClose={onClose}
        open={open}
        getContainer={false}
        style={{ position: 'absolute' }}
      >
        <p>Some contents...</p>
      </Drawer>
    </div>
  );
};

export default App;
  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值