react+antD構(gòu)建后臺項目

學(xué)習(xí)react了晕换,最近剛好上手一個后臺管理系統(tǒng),直接實戰(zhàn)届巩;代碼有些不規(guī)范的地方恕汇。

上框架

# 安裝
npm install -g create-react-app
# 構(gòu)建一個react-admin的項目
npx create-react-app react-admin
cd react-admin

# 啟動編譯當(dāng)前的React項目
npm start

使用antD組件庫

npm install antd --save

在app.js引入樣式

import 'antd/dist/antd.css'; // or 'antd/dist/antd.less'

在src文件夾下新建api、components瘾英、pages、router文件夾


image.png

配置路由
安裝

npm install react-router-dom --save-dev

在pages新建login和index文件夾但惶,分別新建login.js和index.js文件

import React, { Component } from "react";
require("./index.less");
class Login extends Component {
  render() {
    return (
      <div className="main-page">
        登錄頁
      </div>
    );
  }
}
export default Login ;
import React, { Component } from "react";
require("./index.less");
class Index extends Component {
  render() {
    return (
      <div className="main-page">
        首頁
      </div>
    );
  }
}
export default Index ;

在router文件夾下新建router.js和allocation.js
router.js

import Login from '../pages/login/login'
import Index from '../pages/index/index'
// 菜單相關(guān)路由
export const menus = []
//登錄膀曾、首頁阳啥、404路由
export const main = [
    { path: '/login', exact: true, name: '登錄', component: Login },
    { path: '/',  name: '首頁', component: Index, routes: menus },
]

export const routerExport =  {
    main, menus
}

allocation.js

import React from 'react';
import { Route, Link, Switch, Redirect } from "react-router-dom";

export const SubRoutes = route => (<Route
    path={route.path}
    exact={route.exact}
    render={props =>{
        return (
            route &&( route.Redirect ? (<Redirect to={route.Redirect}></Redirect>) :
            (<route.component {...props} routes={route.routes} />))
        )
    }}
/>
);

export const RenderRoutes = ({routes}) => {return <Switch> {(routes.map((route, i) =>  <SubRoutes key={i} {...route} />))} </Switch> };

到app.js配置

import { BrowserRouter as Router } from "react-router-dom";
import { main as mainConfig } from "./router/index";
import { RenderRoutes } from "./router/allocation";

function App() {
  return (
    <Router>
      <div className="App">
        <RenderRoutes routes={mainConfig}></RenderRoutes>
      </div>
    </Router>
  );
}

接下來輸入http://localhost:3000/loginhttp://localhost:3000就能看到首頁和登錄頁了
接著對index布局察迟,采用antD的layout組件
index.js

import React, { Component } from "react";
import { Layout, Switch, Menu } from "antd";
import { RenderRoutes } from "../../router/utils";
import { Link } from "react-router-dom";
require("./index.less");

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

class Index extends Component {
  state = {
    collapsed: false,
    theme: "dark",
  };

  onCollapse = (collapsed) => {
    console.log(collapsed);
    this.setState({ collapsed });
  };
  changeTheme = (value) => {
    this.setState({
      theme: value ? "dark" : "light",
    });
  };
  render() {
    const { collapsed } = this.state;
    let { routes } = this.props;
    console.log(routes);
    return (
      <Layout style={{ minHeight: "100vh" }}>
        <Sider
          theme={this.state.theme}
          collapsible
          collapsed={collapsed}
          onCollapse={this.onCollapse}
        >
          <div className="logo" />
          <Menu
            theme={this.state.theme}
            defaultSelectedKeys={["/user/experience"]}
            defaultOpenKeys={["sub1"]}
            mode="inline"
          >
            <Menu.Item key="1">
              <Link to="/user/WorkBench">工作臺</Link>
            </Menu.Item>
            <SubMenu key="sub1" title="用戶管理">
              <Menu.Item key="/user/experience">
                <Link to="/user/experience">體驗用戶</Link>
              </Menu.Item>
              <Menu.Item key="4">VIP用戶</Menu.Item>
              <Menu.Item key="5">
                <Link to="/user/Details">用戶詳情</Link>
              </Menu.Item>
            </SubMenu>
          </Menu>
        </Sider>
        <Layout className="site-layout">
          <Header className="ant-layout-header" style={{ background: "#fff" }}>
            
          </Header>
          <Content style={{ margin: "16px 16px" }}>
            <RenderRoutes routes={routes}></RenderRoutes>
          </Content>
        </Layout>
      </Layout>
    );
  }
}
export default Index;

至此,就可以開始子頁面開發(fā)了所踊,持續(xù)學(xué)習(xí)中


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末秕岛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子陆蟆,更是在濱河造成了極大的恐慌惋增,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诈皿,死亡現(xiàn)場離奇詭異稽亏,居然都是意外死亡壶冒,警方通過查閱死者的電腦和手機截歉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門瘪松,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人宵睦,你說我怎么就攤上這事⊥┲牵” “怎么了烟馅?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長郑趁。 經(jīng)常有香客問我,道長缺脉,這世上最難降的妖魔是什么悦穿? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮礁扮,結(jié)果婚禮上瞬沦,老公的妹妹穿的比我還像新娘太伊。我一直安慰自己逛钻,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布芳悲。 她就那樣靜靜地躺著边坤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪肮韧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天弄企,我揣著相機與錄音耸峭,去河邊找鬼。 笑死院究,一個胖子當(dāng)著我的面吹牛本涕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播菩颖,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼放祟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起跪妥,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤眉撵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后纽疟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡散吵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年膘壶,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片顷锰。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡亡问,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出州藕,到底是詐尸還是另有隱情,我是刑警寧澤毁涉,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布锈死,位于F島的核電站,受9級特大地震影響待牵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜偎行,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蛤袒。 院中可真熱鬧,春花似錦皱碘、人聲如沸隐孽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缩功。三九已至,卻和暖如春虑稼,著一層夾襖步出監(jiān)牢的瞬間势木,已是汗流浹背蛛倦。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工溯壶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人且改。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓板驳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親若治。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容