react问题录5——react实现局部刷新(antd)


问题起因:学习antdUI组件库时,发现 layout 的组件例子中,点击左侧菜单栏没有实现 content 部分的跳转。

解决方法:

1.入口文件 src/index.tsx 使用 BrowserRouter 将 APP 包裹

// import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import { BrowserRouter as Router } from 'react-router-dom';

ReactDOM.render(
    // <React.StrictMode>
   <Router> <App />, </Router>,
    // </React.StrictMode>,
    document.getElementById('root')
);
reportWebVitals();

2. App配置 src/App.tsx  在 App 内插入 BasicRoute (BasicRoute 已经被Layout包装好了。)

import './App.css';
import BasicLayout from './layout/BasicLayout';
import BasicRoute from './routes/router'
function App() {
    return (
        <div className="App"><BasicRoute />
        </div>
    );
}

export default App;

3. 路由配置 src/routes/router 

import React from 'react';
import { Route, Routes } from 'react-router-dom';
//引入布局和子组件
import Layout from '../layout/BasicLayout';
import Welcome from '../view/Mywelcome';
import Home from '../view/Myhome';

// //分配路由
const BasicRoute = () => (
    <Layout> <Routes>
            <Route path="welcome" element={<Welcome />} />
            <Route path="home" element={<Home />} /></Routes> </Layout>
);

export default BasicRoute;

4.布局配置 src/layout/BacialLayout 在这个文件里 引用的 antd layout和menu

import React, { Children, FC } from 'react';
import { Link, useLocation } from 'react-router-dom';
import { Layout, Menu } from 'antd';
import Home from '../view/Myhome';
import Welcome from '../view/Mywelcome'
import './BasicLayout.css';
import BasicRoute  from '../routes/router'

const BasicLayout: FC = (props) => {
    const { Header, Footer, Sider, Content } = Layout;
    console.log(props)
    // console.log('eee');
    //     let search = useLocation();
    //     console.log(search);
    //     console.log('sss');
    // const change = () => {
    //      if(search.pathname == '/home'){
    //         return <Home />;
    //      }else{
    //         return <Welcome />;
    //      }
    // };

    return (
        <Layout>
            <Sider width={256} style={{ minHeight: '100vh', color: 'white' }}>
                <Menu theme="dark" mode="inline">
                    <Menu.Item key="1">
                        {'home '}
                        <Link to="/home" />
                    </Menu.Item>
                    <Menu.Item key="2">
                        {'welcome '}
                        <Link to="/welcome" />
                    </Menu.Item>
                </Menu>
            </Sider>
            <Layout>
                <Header style={{ background: '#fff', textAlign: 'center', padding: 0 }}>Header</Header>
                <Content style={{ margin: '24px 16px 0' }}>
                    <div style={{ padding: 24, background: '#fff', minHeight: 360 }}>{props.children}</div>
                </Content>
                <Footer style={{ textAlign: 'center' }}>Ant Design ©2018 Created by Ant UED</Footer>
            </Layout>
        </Layout>
    );
};
export default BasicLayout;


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM