老师这里导航都到二级导航里了

来源:1-1 项目简介

qq_Unique彼岸花丶花海_0

2021-06-04 17:27:02

http://img.mukewang.com/climg/60b9f18209b9d3ba19201048.jpg

按照老师步骤把这个标签放到了外面然后页面就成这样了

index.js
import React, { Component, Fragment } from 'react';
import { BrowserRouter, Route, Switch } from 'react-router-dom';
import ReactDOM from 'react-dom';
//Ant Design库组件
import 'antd/dist/antd.css';
import { Layout } from 'antd';
//网页组件
import AppHeader from './components/header/';
import NewList from './containers/List';
import Detail from './containers/Detail';
//css
import './style.css';
// import { List } from 'rc-field-form';
const { Header, Footer, Content } = Layout;
//路由
class App extends Component {
  render() {
    return (
      <BrowserRouter>
        <Layout style={{ minWidth: 1300, height: '100%' }}>
          <Header className="header">
            <AppHeader />
          </Header>
          <Content className="content">
            <Switch>
              <Route path='/detail' component={Detail} />
              <Route path='/' component={NewList} />
            </Switch>
          </Content>
          <Footer className="footer">Footer</Footer>
        </Layout>
      </BrowserRouter>
    )
  }
}
ReactDOM.render(
  <App />,
  document.getElementById('root')
);
header/index.js
import React, { Component, Fragment } from 'react';
import { Link } from 'react-router-dom';
//请求数据
import axios from 'axios';
//图片
import logo from './logo.png';
//css
import './style.css';
//ant design 组件
import { Menu } from 'antd';
import * as Icon from '@ant-design/icons';

class AppHeader extends Component {
    constructor(props) {
        super(props);
        this.state = {
            list: []
        }
    }
    getMenuItems() {
        return this.state.list.map(item => {
            //获取图标类型
            var type = item.type;
            //将图标创建处理
            var icon = React.createElement(Icon[type]);
            return (
                <Link to='/ccc'>
                    <Menu.Item key={item.id} icon={icon}>
                        {item.title}
                    </Menu.Item>
                </Link>

            )
        })
    }
    componentDidMount() {
        axios.get('https://www.fastmock.site/mock/0c60ed3a118e3a97b197a6a801c87179/react/api/react')
            .then((res) => {
                this.setState({
                    list: res.data.data.list
                })
            })
    }

    render() {
        return (
            <Fragment>
                <img className="logo" alt='img' src={logo} />
                <Menu mode="horizontal" className="menu">
                    {this.getMenuItems()}
                </Menu>
            </Fragment>
        )
    }
}
export default AppHeader;
List/index.js
import React ,{Component} from 'react';
//ant design组件
import { List, Avatar } from 'antd';
//数据请求
import axios from 'axios';
const data = [
    'Racing car sprays burning fuel into crowd.',
    'Japanese princess to wed commoner.',
    'Australian walks 100km after outback crash.',
    'Man charged over missing wedding girl.',
    'Los Angeles battles huge wildfires.',
  ];
class NewList extends Component{
    constructor(props){
        super(props);
        this.state={
            data:[]
        }
    }
    componentDidMount(){
        axios.get('http://www.dell-lee.com/react/api/list.json')
        .then(res=>{
            this.setState({
                data:res.data.data
            })
            console.log(res.data.data);
        })
    }
    render(){
        return (
            <List style={{background:"#fff"}}
      bordered
      dataSource={this.state.data}
      renderItem={item => <List.Item>{item.title}</List.Item>}
    />
  )
    }
}
export default NewList;


写回答

1回答

好帮手慕久久

2021-06-04

同学你好,解答如下:

之所以导航样式不对,是因为如下代码中,link标签包裹了Menu.Item,而link最终会解析成a标签,Menu.Item解析成了li

http://img.mukewang.com/climg/60b9f6ba09b5590806730223.jpg

所以结构上是a包裹了li:

http://img.mukewang.com/climg/60b9f715093fe4b117580515.jpg

该结构导致了li计算出来的高度为0,所以看不到li(还有一些其他样式上的问题):

http://img.mukewang.com/climg/60b9f76d0958e2f615100374.jpg

建议将结构调成成如下形式:

http://img.mukewang.com/climg/60b9f7cb09b4fff406140222.jpg

调整后,导航整体样式还是不太对:

http://img.mukewang.com/climg/60b9f81d09d7544f05700138.jpg

原因是导航的父元素ul宽度太小了:

http://img.mukewang.com/climg/60b9f84209c0d82110690718.jpg

建议增大ul宽度:

http://img.mukewang.com/climg/60b9f84e091091ae05540242.jpg

ant-design4版本的图标,对动态渲染的支持性并不是很好,所以同学会遇到这么多问题。

建议调整完此处后,将ant-design换成课程中的3版本,该版本对动态渲染图标的支持性较好。换成3版本后,代码就可以与视频中一致了。整个项目做完后,如果有时间在琢磨一下4版本的ant-design。

更换ant-design版本,指令如下:

npm install --save antd@3.10.9。

实际开发中,可以直接使用3版本,并不是说ant-design更新了,就要使用最新的。

祝学习愉快!

0

0 学习 · 15276 问题

查看课程