【问题标题】:Nested drawer/layout in react toolbox反应工具箱中的嵌套抽屉/布局
【发布时间】:2017-04-16 13:56:32
【问题描述】:

如何实现嵌套抽屉布局?

 LOGO | Nav-Items-Here
-------------------------
Page Header
-------------------------
Drawer  | Content
/Sidebar|
        |
        |

我尝试使用嵌套布局,但它不起作用。抽屉总是固定在窗口的顶部。我的代码看起来像这样(简化以消除像反应路由器这样的复杂性):

      <Layout>
        <Panel>
          <DomainPage /> 
        </Panel>
      </Layout>

域名页面

  <div>
    <header styleName="pageHeader.header pageHeader.headerNoBorder">
      <h1 styleName="pageHeader.headerText">{this.props.domain.get("name")}</h1>
    </header>

    <Tabs theme={theme} index={this.state.index} onChange={this.handleTabChange}>
      <Tab label="Intents">
        <DomainIntentsTab />
      </Tab>
      <!-- ... -->
    </Tabs>
  </div>

DomainIntentsTab

  <Layout>
    <Panel>
      <NavDrawer pinned active>
        Test
      </NavDrawer>
    </Panel>
  </Layout>

【问题讨论】:

    标签: reactjs react-toolbox


    【解决方案1】:

    react-toolbox playground中测试以下代码

    class LayoutTest extends React.Component {
    state = {
        drawerActive: false
    };
    
    toggleDrawerActive = () => {
        this.setState({ drawerActive: !this.state.drawerActive });
    };
    
    render() {
        return (
           <Layout>
            <Panel>
              {/* DomainPage */}
              <div>
                <header>
                  <h1>Header</h1>
                </header>
                <Tabs>
                  <Tab label="Intents">
                   {/* DomainIntentsTab */}
                    <Layout>
                      <Panel>
                        <NavDrawer active={this.state.drawerActive} onOverlayClick={ this.toggleDrawerActive }>
                          <p>Navigation, account switcher, etc. go here.</p>
                        </NavDrawer>
                        <div style={{ flex: 1, overflowY: 'auto', padding: '1.8rem' }}>
                          <Button label="toggle drawer" onClick={ this.toggleDrawerActive } primary raised/>
                          <h1>Main Content</h1>
                          <p>Main content goes here.</p>
                        </div>
                      </Panel>
                    </Layout>
                  </Tab>
                </Tabs>
              </div>
            </Panel>
          </Layout>
        );
      }
    }
    
    return <LayoutTest />;
    

    您可能会发现 NavDrawer 的 box-shadow 在 navdrawer 关闭状态下可见。您可以使用 CSS 更正此问题

    编辑

    固定侧边菜单:

    根据thisNavDrawerPanel 是兄弟姐妹;所以你可以修改DomainIntentsTab部分如下。

    注意:不要忘记在NavDrawer上添加pinned

    <Tab label="Intents">
        {/* DomainIntentsTab */}
        <Layout>
            <NavDrawer pinned active={this.state.drawerActive} onOverlayClick={ this.toggleDrawerActive }>
                <p>Navigation, account switcher, etc. go here.</p>
            </NavDrawer>
            <Panel>
                <div style={{ flex: 1, overflowY: 'auto', padding: '1.8rem' }}>
                    <Button label="toggle drawer" onClick={ this.toggleDrawerActive } primary raised/>
                    <h1>Main Content</h1>
                    <p>Main content goes here.</p>
                </div>
            </Panel>
        </Layout>
    </Tab>
    

    【讨论】:

    • 好的,但问题是我希望侧边栏“停靠”,我可以设置active=true,但它仍然高于我的内容。现在我使用 CSS 来实现侧边栏。将标记为答案,因为它解决了侧边栏始终停靠在顶部的问题......但是......我犯了什么错误?
    • @JiewMeng 编辑了我的答案。让我知道这是否是您想要的?
    • 哦,太好了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多