首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蚂蚁设计布局没有按预期工作

蚂蚁设计布局没有按预期工作
EN

Stack Overflow用户
提问于 2020-04-10 09:59:28
回答 3查看 8.5K关注 0票数 2

我有一个React应用程序。我决定使用蚂蚁设计添加一个布局。我遵循了下面的例子。

https://2x.ant.design/components/layout/#components-layout-demo-custom-trigger

这是我的组件代码。(Full.js)

代码语言:javascript
复制
import React, { Component, Fragment } from 'react'
import { Layout, Menu } from 'antd'
import Icon from '@ant-design/icons'
import './Full.css'
import ReactDOM from 'react-dom'
import DailyData from '../DailyData'
import Container from 'react-bootstrap/Container'
import Toggle from './Toggle'

const { Header, Footer, Sider, Content } = Layout;

class Full extends React.Component {

    state = {
        collapsed: false,
    };
    toggle = () => {
        this.setState({
            collapsed: !this.state.collapsed,
        });
    }

    render() {
        return (
            <Layout style={{ height: "100vh" }}>
                <Sider
                    trigger={null}
                    collapsible
                    collapsed={this.state.collapsed}
                >
                    <div className="logo" />
                    <Menu theme="dark" mode="inline" defaultSelectedKeys={['1']}>
                        <Menu.Item key="1">
                            <Icon type="user" />
                            <span>nav 1</span>
                        </Menu.Item>
                        <Menu.Item key="2">
                            <Icon type="video-camera" />
                            <span>nav 2</span>
                        </Menu.Item>
                        <Menu.Item key="3">
                            <Icon type="upload" />
                            <span>nav 3</span>
                        </Menu.Item>
                    </Menu>
                </Sider>
                <Layout>
                    <Header style={{ background: '#fff', padding: 0 }}>
                        <Icon
                            className="trigger"
                            type={this.state.collapsed ? 'menu-unfold' : 'menu-fold'}
                            onClick={this.toggle}
                        />
                    </Header>
                    <Content style={{ margin: '24px 16px', padding: 24, background: '#fff', minHeight: 280 }}>
                        Content
              </Content>
                </Layout>
            </Layout>
        );
    }
}

export default Full;

我在App.js文件中使用这个组件,如下所示。

代码语言:javascript
复制
import React from 'react';
import 'bootstrap/dist/css/bootstrap.min.css';
import Header from './components/layout/Header.js'
import DailyData from './components/DailyData.js'
import Container from 'react-bootstrap/Container'
import Toggle from './components/layout/Toggle.js'
import Full from './components/layout/Full'


class App extends React.Component {
  constructor(props) {
    super(props);
  }

  render() {
    return (
      <div className="App">
        <Full />
      </div >
    );
  }
}

export default App;

我的Full.css文件如下。

代码语言:javascript
复制
#components-layout-demo-custom-trigger .trigger {
    font-size: 18px;
    line-height: 64px;
    padding: 0 16px;
    cursor: pointer;
    transition: color .3s;
  }

  #components-layout-demo-custom-trigger .trigger:hover {
    color: #108ee9;
  }

  #components-layout-demo-custom-trigger .logo {
    height: 32px;
    background: #333;
    border-radius: 6px;
    margin: 16px;
  }

但是输出会像这样显示。

EN

回答 3

Stack Overflow用户

发布于 2020-08-30 08:49:48

我还使用了Ant,我使用的是4.4.1版本的。不知道你想要什么,所以我要和你分享整个代码。

代码语言:javascript
复制
import React from 'react';
import { Route, Switch, NavLink, Redirect, withRouter } from 'react-router-dom'
import {RouteComponentProps} from "react-router";
import { Layout, Menu } from 'antd';
import {
  DesktopOutlined,
  PieChartOutlined,
  UserOutlined,
  SettingOutlined
} from '@ant-design/icons';

import Shipper from '../shipper/shipper'

const { Header, Content, Footer, Sider } = Layout;
const { SubMenu } = Menu;

// Type whatever you expect in 'this.props.match.params.*'
type PathParamsType = {
  param1: string,
}

// Your component own properties
type PropsType = RouteComponentProps<PathParamsType> & {

}

class Sidebar extends React.Component<PropsType> {

  state = {
    collapsed: false,
  };

  onCollapse = (collapsed: any) => {
    this.setState({ collapsed });
  };


  render() {
    let { pathname } = this.props.location;
    return (
      <Layout style={{ minHeight: '100vh' }}>
        <Header className="header">
          <div className="logo" />
          <Menu mode="horizontal" theme="dark" className="flex-setting">
            <SubMenu icon={<SettingOutlined />} title="Settings">
              <Menu.ItemGroup title="Basic Settings">
                <Menu.Item key="setting:2">
                  <a href={"/accounts/logout/"} target="_self">
                    Signout
                  </a>
                </Menu.Item>
              </Menu.ItemGroup>
            </SubMenu>
          </Menu>
        </Header>
        <Layout>
        <Sider collapsible collapsed={this.state.collapsed} onCollapse={this.onCollapse}>
          {/* <div className="logo" /> */}
          <Menu theme="dark" 
          defaultSelectedKeys={['/shipper']}
          selectedKeys={[pathname]} 
          mode="inline">
            <Menu.Item key="/shipper" icon={<PieChartOutlined />}>
              <NavLink to="/shipper">
                <span>Shipper</span>
              </NavLink>
            </Menu.Item>
            </SubMenu>
          </Menu>
        </Sider>
        <Layout className="site-layout">
          {/* <Header className="site-layout-background" style={{ padding: 0 }} /> */}
          <Content style={{ margin: "16px 16px", background: "#fff" }}>
            <div style={{ padding: 24, background: "#fff", minHeight: 360 }}>
              <Switch>
                <Route exact path="/" render={() => (
                    <Redirect to="/shipper"/>
                )}/>
                <Route path="/shipper">
                  <Shipper />
                </Route>
              </Switch>
            </div>
          </Content>
          <Footer style={{ textAlign: 'center' }}>Copyrights &copy; 2020 All Rights Reseverd by Company.</Footer>
        </Layout>
      </Layout>
      </Layout>
    );
  }
}

export default withRouter(Sidebar);

我的css如下:

代码语言:javascript
复制
.header {
  display: inherit;
}

.logo {
  height: 32px;
  width: 35px;
  margin: 16px;
  background-image: url("main-logo.jpg");
}

.flex-setting {
  display: flex;
  flex-direction: row-reverse;
  width: 100%;
}

有很多对你来说不需要的东西,所以把那部分去掉。一旦你遵循了这一点,你就会实现以下目标:

票数 0
EN

Stack Overflow用户

发布于 2020-10-24 06:17:59

从css文件中删除“#组件-布局-演示-自定义触发器”,它将工作。我正在分享我的css文件。App.css

代码语言:javascript
复制
   @import "~antd/dist/antd.css";
.trigger {
  font-size: 18px;
  line-height: 64px;
  padding: 0 24px;
  cursor: pointer;
  transition: color 0.3s;
}

.trigger:hover {
  color: #1890ff;
}
.logo {
  height: 32px;
  background: rgba(255, 255, 255, 0.2);
  margin: 16px;
}

.site-layout .site-layout-background {
  background: #fff;
}
票数 0
EN

Stack Overflow用户

发布于 2021-10-28 16:15:37

因为该示例前面有触发器类ID #component-布局演示自定义触发器,但是复制的代码中也删除了#component布局演示自定义触发器在这里输入图像描述

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61137908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档