最流行的前端框架
umi安装
1 2 3 4 5
| # 安装nodeJS # 安装tyarn,加快下载速度 npm i yarn tyarn -g # 安装umi tyarn global add umi
|
初始化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| # 生成package.json文件 tyarn init -y
# 项目中添加umi的依赖 tyarn add umi --dev
# 在config目录下创建config.js配置umi export default {};
# 添加React插件 tyarn add umi-plugin-react --dev
# 在config.js中引入 export default { plugins: [ ['umi-plugin-react', { }] ] }
#启动服务 umi dev
# 构建和部署 umi build
|
JSX语法
- JSX语法就是可以在js文件中插入HTML片段
- JSX语法可以被Babel转码工具进行转码
- JSX中所有的标签必须是闭合的并且只能有一个根标签
1 2 3 4 5
| export default () => { const t = () => "world"; return <div>hello { t() }</div>; }
|
组件
创建组件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import React from 'react';
class Test extends React.Component { render() { return ( <div> Test组件 name = {this.props.name} 内容 = {this.props.children} </div> ) } }
export default Test;
|
使用组件
1 2 3 4 5 6 7 8 9 10 11 12
| import React from 'react'; import Test from './Test';
class Show extends React.Component { render() { return ( <Test name="极客小祥">标签包裹的内容</Test> ); } } export default Show;
|
组件状态
每一个组件都有一个状态,保存在this.state中,当状态的值发生改变时,React框架会自动调用render()方法
- this.state值的设置要在构造函数中设置
- 要修改this.state中的值,需要调用this.setState()完成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| import React from 'react';
class List extends React.Component { constructor(props) { super(props); this.state = { dataList: [1, 2, 3], maxNum: 3 } }
render() { return ( <div> <ul> { this.state.dataList.map((value, index) => { return <li key={index}>{value}</li>; }) } </ul> <button onClick={ () => { // 获取最大值加1 let newMaxNum = this.state.maxNum + 1; // 遍历出原来的数组加上一个值 let newList = [...this.state.dataList, newMaxNum]; // 重新设置值 this.setState({ dataList: newList, maxNum: newMaxNum }); } }>点击加1 </button> </div> ); } }
export default List;
|
Model
在config.js设置开启dva插件
1 2 3 4 5 6 7 8 9
| export default { plugins: [ ['umi-plugin-react',{ dva : true }] ] };
|
model
在src/models下创建js文件,umi插件会自动把这个文件下的所有文件都渲成model
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| export default { namespace: 'list', state: { dataList: [1, 2, 3], maxNum: 3 }, reducers: { addNewData(state) { let newMaxNum = state.maxNum + 1; let newList = [...state.dataList, newMaxNum]; return { dataList: newList, maxNum: newMaxNum } } }
|
使用model
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| import React from 'react';
import {connect} from 'dva';
const namespace = 'list';
const mapStateToProps = (state) => { const dataList = state[namespace].dataList; const maxNum = state[namespace].maxNum; return { dataList, maxNum }; };
const mapDispatchToProps = (dispatch) => { return { addNewData() { dispatch({ type: namespace + "/addNewData" }); } } };
@connect(mapStateToProps, mapDispatchToProps) class List extends React.Component { render() { return ( <div> <ul> { // 从props中获取数据 this.props.dataList.map((value, index) => { return <li key={index}>{value}</li>; }) } </ul> <button onClick={ () => { // 从props中调用函数 this.props.addNewData(); } }> 点击加1 </button> </div> ); } }
export default List;
|
mock数据
umi中支持对请求的模拟,模拟服务端返回的数据
1 2 3 4 5 6 7 8
| export default { 'get /ds/list'(req, res) { res.json({ data: [1, 2, 3, 4], maxNum: 4 }); } }
|
Ant Design
使用
1 2 3 4 5 6 7 8 9 10 11 12
| export default { plugins: [ ['umi-plugin-react',{ dva : true, antd: true }] ] };
|
相关文章
JavaScript基础
JavaScript高级
Jquery基础
Jquery高级
Bootstrap
Ajax和Json
DataTables
Sweetalert2
zTree使用
Vue