#react 之ant design Pro 学习研究#----启动项目
2019独角兽企业重金招聘Python工程师标准>>>
#首页 src/index.js
import '@babel/polyfill';
import 'url-polyfill';
import dva from 'dva';//import createHistory from 'history/createHashHistory';
// user BrowserHistory
import createHistory from 'history/createBrowserHistory';
import createLoading from 'dva-loading';
import 'moment/locale/zh-cn';
import './rollbar';import './index.less';// 1. Initialize dva初始化
const app = dva({history: createHistory(),
});// 2. Plugins 加载插件
app.use(createLoading());// 3. Register global model 注册全集model
app.model(require('./models/global').default);// 4. Router 加载路由
app.router(require('./router').default);// 5. Start
app.start('#root');export default app._store; // eslint-disable-line
就是以上5步成就了首页 引用createHistory 可以实现类似java restfull 风格api 一样的路径访问
引用路由 src/router.js
import React from 'react';
import { routerRedux, Route, Switch } from 'dva/router';
import { LocaleProvider, Spin } from 'antd';
import zhCN from 'antd/lib/locale-provider/zh_CN';
import dynamic from 'dva/dynamic';
import { getRouterData } from './common/router';
import Authorized from './utils/Authorized';
import styles from './index.less';//const antIcon = <Icon type="loading" style={{ fontSize: 24 }} spin />;const { ConnectedRouter } = routerRedux;
const { AuthorizedRoute } = Authorized;
dynamic.setDefaultLoadingComponent(() => {return <Spin size="large" className={styles.globalSpin} />;
});function RouterConfig({ history, app }) {const routerData = getRouterData(app);const UserLayout = routerData['/user'].component;const BasicLayout = routerData['/'].component;return (<LocaleProvider locale={zhCN}><ConnectedRouter history={history}><Switch><Route path="/user" component={UserLayout} /><AuthorizedRouteapath="/"authority={['admin', 'user']}render={props => <BasicLayout {...props} />}redirectPath="/user/login"/></Switch></ConnectedRouter></LocaleProvider>);
}export default RouterConfig;
里面用到了AuthorizedRoutea 和 authority,目前笔者比较笨,还没研究透,大意是权限控制,感觉和spring 的secrity 差不多,在这个项目当中主要用了
这里还用到了 加载动画,但是也没找到怎么替换,后续补充更新
// use localStorage to store the authority info, which might be sent from server in actual project.
export function getAuthority() {const exp =30000;/* const curTime = new Date().getTime();const key = localStorage.getItem('antd-pro-authority');if(key){if(isJSON(key)){const dataObj = JSON.parse(key);if (curTime - dataObj.time > exp){return "guest"}return dataObj.data;}else{return "18888888888";}}*/// return localStorage.getItem('antd-pro-authority') || ['admin', 'user'];return localStorage.getItem('antd-pro-authority') || 'guest'; //修改这里为guest.
}function isJSON(str) {try {if (typeof JSON.parse(str) == "object") {return true;}} catch(e) {}return false;
}export function setAuthority(authority) {/*let curTime = new Date().getTime();let authorityvalue = JSON.stringify({data:authority,time:curTime});return localStorage.setItem('antd-pro-authority', authorityvalue);*/return localStorage.setItem('antd-pro-authority', authority);}export function setuser(user) {if(user){return localStorage.setItem('user', JSON.stringify(user));}else {return localStorage.setItem('user', "");}}
貌似是说 如果权限是guest 那么就进入到登陆页面,如果是admin 或者user 权限 就进入到相应的路由页面 后续研究好了再来补充
##使用日常记录
src/components/SiderMenu/SiderMenu.js 第212代码。width改右边导航栏长度导航栏的内容在 src/common/menu.js 中全局的路由关系是这样一个走向:src/index.js 中通过 app.router(require('./router').default);,将 src/router.js 绑定到 dva 实例的 router 方法上。而在 src/router.js 中又引入了 src/common/router.js 中的 getRouterData 作为数据源。如果有点绕,不太能一下子看明白,那就直接记下面的结论:因而,src/common/menu.js 中 path 所指向的路径对应于 src/common/router.js 中的路由记录。getRouterData 同src目录下,.webpackrc.js里面配置了,关联了页面入口设置。routes:每个路由对应的页面组件文件。主要定义具体页面的基本结构和内容。services:用于与后台交互、发送请求等。models:用于组件的数据存储,接收请求返回的数据等。components:组件文件夹。每个页面可能是由一些组件组成的,对于一些相对通用的组件,建议将该组件写入components文件夹中,并在routes文件夹中的文件引入来使用。.roadhogrc.mock.js 拦截api接口地址utils/authority.js 控制 权限 登录用户名redux 和 dva import createHistory from 'history/createHashHistory'; 引入后 可以让url中多出# 比如:http://localhost:8000/#/?_k=gebc0mimport createHistory from 'history/createBrowserHistory'; 引入后 可以让url 中去掉#,形如restfulurl 方式的 url 在页面index.js 中 初始化dva cesjosfhoslhfshgdl hgdl 1、下载或克隆项目源码2.npm安装相关包文件npm i3.启动项目 npm start 4.打包项目npm run build
转载于:https://my.oschina.net/u/3277181/blog/2962001
#react 之ant design Pro 学习研究#----启动项目相关推荐
- React 基于ant design Pro 4 实现的一个分页, 自定义页码颜色
标题目录 代码 样式 前言 这是在 Ant Design Pro 4 中基于 ant design 的 Pagination 分页组件的基础上开发的. 有这么一个需求, 页码的颜色基于该页是否有差异, ...
- Ant Design Pro 改变默认启动端口号
找到package.json文件,找到图位置加--port即可.
- React的Ant Design Pro目录结构
- ant design pro 加载慢_ant design pro项目打包后页面加载缓慢
用ant design pro框架做的项目,打包之后每一个页面加载的速度都特别慢,在.webpackrc里面配置了ignoreMomentLocale: true, disableDynamicImp ...
- 使用ant design Pro开发项目的小结
一.关于上手. 1. 关于ant design Pro的介绍,自己看官网,大致上可以理解为ant design(组件库) ant design Pro (完整的项目) dva(路由 数据流管理)的组合 ...
- ant design pro模板_Ant Design Pro 学习笔记
学习笔记 摘要介绍 Ant Design Pro 是一个基于Ant Design搭建起来的模板项目.它提供了两个主要布局:BasicLayout.UserLayout,在布局基础上制作了20多个基础页 ...
- ant design pro(一)安装、目录结构、项目加载启动【原始、以及idea开发】
一.概述 1.1.脚手架概念 编程领域中的"脚手架(Scaffolding)"指的是能够快速搭建项目"骨架"的一类工具.例如大多数的React项目都有src,p ...
- ant design pro V2 学习笔记
该笔记分为两部分,前面部分为官方文档介绍,后面为实际项目改造的历程 本文档不定时更新,你想要的在实战部分 如果你对react.dva等一些概念不是很清晰,建议先看以下概念: react:https:/ ...
- React Ant design pro 访问服务器接口,获取数据显示
React Ant design pro 访问服务器接口 一.前两天更新了Ant design pro环境搭建,需要了解的小伙伴可以看一下之前的内容,还有react基础教程噢. 二.框架搭建完后,一般 ...
最新文章
- python考级证书-python考级有几个级别
- 使用gpu(gtx1080) cudnn 5.1下编译faster rcnn
- 获取笔记本的SHA1的值。
- 怎么样得到平台相关的换行符?
- windows 播放MP3音乐
- vue @click 如何绑定多个方法
- python内置类型和类_python – 内置类型和用户定义之间的不一致
- cf D. Dima and Hares
- 没业绩怎么写好年终总结?这样写总结年终奖翻倍!
- 固定定位小技巧(HTML、CSS)
- 【MySQL性能优化的21个最佳实践】
- windows系统常用运行命令大全
- vi: 未找到命令_vi技巧和窍门:十个很棒的命令一定会给您的朋友留下深刻的印象...
- PHP 链接手机短信接口
- 创建mysql对象_mysql创建statement对象
- sizeof 32位和64位操作系统的区别
- 原生JS购物车---cookie应用
- SAP 的成本中心与利润中心的关系
- 实战型较强的交易经典著作:
- 研究生期间自学模拟ic能在校招找到工作吗?
热门文章
- Asp深度揭密(下)
- JS 前端排序 数组指定项移动到最后
- ES6学习笔记(一):轻松搞懂面向对象编程、类和对象
- CNN图像分割简史:从R-CNN到Mask R-CNN(译)
- wchar_t与char转换(转载)
- OpenCV3学习(6.1)——边缘检测---Canny,Sobel,Prewitt,Robert,Laplace,LOG,DOG算子
- 7-84 点赞狂魔 (25 分)
- 7-5 图形继承与多态 (50 分)
- VS2010与OpenCV2410简单配置
- css3动画 --- Transition