老师这里导航都到二级导航里了
来源:1-1 项目简介
qq_Unique彼岸花丶花海_0
2021-06-04 17:27:02
按照老师步骤把这个标签放到了外面然后页面就成这样了
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回答
同学你好,解答如下:
之所以导航样式不对,是因为如下代码中,link标签包裹了Menu.Item,而link最终会解析成a标签,Menu.Item解析成了li:
所以结构上是a包裹了li:
该结构导致了li计算出来的高度为0,所以看不到li(还有一些其他样式上的问题):
建议将结构调成成如下形式:
调整后,导航整体样式还是不太对:
原因是导航的父元素ul宽度太小了:
建议增大ul宽度:
ant-design4版本的图标,对动态渲染的支持性并不是很好,所以同学会遇到这么多问题。
建议调整完此处后,将ant-design换成课程中的3版本,该版本对动态渲染图标的支持性较好。换成3版本后,代码就可以与视频中一致了。整个项目做完后,如果有时间在琢磨一下4版本的ant-design。
更换ant-design版本,指令如下:
npm install --save antd@3.10.9。
实际开发中,可以直接使用3版本,并不是说ant-design更新了,就要使用最新的。
祝学习愉快!
相似问题