在 Antd React App 中重新创建类似 Sider/Drawer 的 Ant Design Pro

Posted

技术标签:

【中文标题】在 Antd React App 中重新创建类似 Sider/Drawer 的 Ant Design Pro【英文标题】:Recreate Ant Design Pro like Sider/Drawer in Antd React App 【发布时间】:2020-10-11 15:55:38 【问题描述】:

我正在尝试将我的 Antd React 应用程序的样式/css 配置为移动设备。

我的主菜单使用 here 所见的反应式侧边菜单。

我的问题是,当我使用移动视口查看时,它有点难看,并且会挤压菜单之外的所有内容。扩展/压缩菜单的小标签涵盖了我的其他一些组件。

我更喜欢他们在 Ant Design Pro 演示中的设计。

但我不确定如何准确地创建它。有没有人尝试过?它似乎在移动视口中使用 Drawer,而不是在 Layout API 中使用 Sider。

【问题讨论】:

【参考方案1】:

想通了。

基本上我的解决方案(不确定这是否是他们在 Ant Design Pro 中实际所做的)是在桌面上使用 Reactive Sider Menu 示例,在移动设备上使用 Drawer。

Reactive Sider Menu 示例中的相同切换按钮可以隐藏/关闭 Sider(在桌面)和 Drawer(在移动设备中)。

诀窍是使用 CSS 媒体查询在桌面中隐藏抽屉并在移动设备中隐藏边栏,这样每个人都可以做自己的事情。

CSS

.hideOnMobile 
  display: none;

@media only screen and (min-width: 768px) 
  .hideOnMobile 
    display: block;
  


.hideOnDesktop 
  display: block;

@media only screen and (min-width: 768px) 
  .hideOnDesktop 
    display: none;
  

App.js

const App = () => 
  // sider and drawer toggle
  const [isToggled, setToggled] = useState(false);
  const toggleTrueFalse = () => setToggled(!isToggled);
  const onClose = () => 
    setToggled(false);
  ;

  return (
            <Layout style= minHeight: "100vh" >
              <Drawer
                placement="left"
                onClose=onClose
                closable=false
                visible=isToggled
                className="hideOnDesktop"
                bodyStyle= backgroundColor: "#001529", padding: "0" 
              >
                <Navbar />
              </Drawer>
              <Sider
                breakpoint="lg"
                collapsedWidth="0"
                collapsed=isToggled
                onBreakpoint=(broken) => 
                  setToggled(broken);
                
                className="hideOnMobile"
              >
                <Navbar />
              </Sider>
              <Layout className="site-layout">
                <Header
                  className="site-layout-background"
                  style= padding: 0 
                >
                  <Row>
                    React.createElement(
                      isToggled ? MenuUnfoldOutlined : MenuFoldOutlined,
                      
                        className: "trigger",
                        onClick: toggleTrueFalse,
                      
                    )
                    <TopNavbar />
                  </Row>
                </Header> 
...

此外,根据 Drawer 组件的 Antd 文档,您可以使用 bodyStyle 属性设置背景颜色并移除填充,以便菜单与 Drawer 的两侧齐平。

【讨论】:

以上是关于在 Antd React App 中重新创建类似 Sider/Drawer 的 Ant Design Pro的主要内容,如果未能解决你的问题,请参考以下文章

Create-React-App创建antd-mobile开发环境(学习中的记录)

create-react-app + antd 后台管理项目创建详细步骤

从0搭建React+antd+TypeScript+Umi Hooks+Mobx前端框架

Create-React-App创建antd-mobile开发环境

react脚手架(create-react-app)配置antd中css按需加载的坑

react 脚手架create-react-app快速配置开发中常见问题,配合antd按需加载