【AntDesignPro】基本配置和工作流程

阅读: 评论:0

【AntDesignPro】基本配置和⼯作流程
⼀、常⽤的⼏个⽬录:
config :配置⽂件
config.js :路由定义⽂件&&代理路径⽂件
defaultSettings.js :主题颜⾊以及标题配置⽂件
mock:mock数据⽂件,⽤于本地开发使⽤
public:静态图⽚资源
src :开发项⽬⽂件(主要在此⽬录下进⾏发)
assets :存放平台logo
components :全局组件⽂件夹
layouts :全局布局⽂件
locales:国际化⽂件
models :数据仓库,每个⽂件都需要⼀个命名空间,定义全局请求函数
pages:页⾯⽂件
service :全局service 发起请求⽂件
utils :⼯具⽂件其中会有⾃定义request.js
平时主要⽤4个⽂件:mock、page、models、services
⼆、module内容具体分析
在model中存在 namespace(命名空间,⽤来区分不同的页⾯之间的数据),state(该命名空间下的数据),effects(⼀些异步请求的api⽅法定义在这⾥),reducers(⽤来修改state的⼀些函数定义在reducers下)
⽂件包含以下⼏个模块(实际上都是javascript对象):
state => 数据构成
effects => 处理异步action,采⽤generator的相关概念,将异步转化成同步写法。
reducers => 处理同步action,相当于redux中的reducer函数,纯函数(即相同的输⼊得到相同的输出)
routes 业务组件,通常是需要连接数据仓库的组件。我们通过connect连接数据仓库之后可以通过this.props获取到数据和dispatch⽅法,并使
⽤dispatch派发action来达到更新state(即更新数据仓库)的操作。
半月刊components 通⽤组件(纯组件),通常是⼀些复⽤性很强的组件,不需要连接数据仓库。通过props传递数据,⽗组件传递相同的props,会渲染相同的页⾯。不做任何业务上的处理。
services 所有的请求都写在这⾥,官⽅已经为我们封装了request⽅法,我们只需要传⼊参数即可。
三、整体的⼀个运⾏流程如下:
进⼊页⾯,在页⾯的componentDidMount钩⼦函数中调⽤model的effect中的⽅法,该⽅法调⽤service⽂件夹下的统⼀管理的请求函数。
获取到服务器返回值,在model的effect中拿到,并且调⽤model下的reducer,调⽤model的reducers对请求的数据进⾏处理,将model的state进⾏改变,页⾯⾃动进⾏渲染。
四、在⼯作中的例⼦
mock(⼀开始使⽤假数据模式)
1 let list = [],//所有数据
2      id = 123;
3
4//初始化
5for(let i =1,i<21;i++){
6    const item = {
7        appId:"T"+(100+i),
8        appName:`应⽤${i}`,
9        status:(i % 3).toString()
10    };
11    list.unshift(item);
12 }
13 const OK = {
14    domain:null,
15    type:"s",
16    code:"AAAAA"
17 };
18 const createApplication = (req,res) =>{
19    const newData = {...req.body.tAtpApplication,appId:"T" +id++};
20    list.unshift(newData);
21    res.json:{
22        reply:{
23          returnCode:ok,
24          tAtpApplication:newData
25        }
26    });
27 }
28 const deleteApplication = (req,res) =>{
29    list.forEach((item,index)=>{
30if(item.appId == req.body.appId){
31          list.splice(index,1)
32      }
33    });
34    res.json:{
35        reply:{
36          returnCode:ok,
37          tAtpApplication:req.body
38        }
39    });
40 }
41 .
42 .
43 .
44 export default {
45    "POST /api/queryApplicationList" :queryApplicationList,
46    "POST /api/createApplicationList" :createApplicationList,
47    "POST /api/deleteApplicationList" :deleteApplicationList,
48 }
module
1 import{
2  queryApplicationList,
3  createApplication,
4  deleteApplication
5 } form "@/services/autotest/application";
6
7 export default {
8  namespace:"autotestApplication",
9  state:{
10    data:{}
11  }
12 }
13
14 effects:{
15  *queryApplicationList({payload,callback},{call,put}){
16    const response = yieId call (queryApplicationList,payload);
17if (pe ==="s"){
18        yieId put({
19            type:"save",
北京星兆老年病医院20            data:response.tAtpApplication,
21//data:response
22    });
23if (callback) callback();
24 }
25 .
26 .
27 .
28 reducers:{
29  save(state,action){
30return {...state,data:action.data || {} };
31 },
32 }
service
1 import request from "@/utils/request";
2
3 export async function queryApplicationList(payload){
4return request("/api/queryApplicationList",{
5        method:"POST",
6        data:payload
7  }):
8 }
9 export async function createApplicationList(payload){ 10return request("/api/createApplicationList",{
11        method:"POST",
12        data:payload
13  }):03年高考作文
14 }
15 export async function deleteApplicationList(payload){ 16return request("/api/deleteApplicationList",{
17        method:"POST",
18        data:payload
19  }):
20 }
pages
1 ...略
2 @connect (({autotestApplication}) =>({通讯世界
3    data:autotestApplication.data
4 }))
5 class Application extends Component {
6    constructor (props){
7      super(props);
8this.state = {
9        data:[]
10      }pasco
11    }
12 }
13
14 componentDidMount(){
15this.queryAppList(this.state.param);
16 }
17
18//删除应⽤
19 handleDelete = key =>{
20    const {dispatch} = this.props;
21    dispatch({
22        type:"autotestApplication/deleteApplication",
23        payload:{appId:key},
24        callback:()=>{
25    }闫世可
26this.queryAppList
27 }

本文发布于:2023-07-07 08:57:16,感谢您对本站的认可!

本文链接:https://patent.en369.cn/xueshu/182212.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:组件   数据   全局   空间   需要   请求
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图