基于dva的表单类页面复用思考

本文探讨了在基于dva的金融管理系统中遇到的表单类页面代码复用问题。作者分析了现有代码的问题,提出通过高阶组件和公用model解决复用,讨论了不同思路及其实现难点,最终实现了最小改动的优化方案,解决了无状态组件的数据订阅和组件挂载监听问题。
摘要由CSDN通过智能技术生成

背景

新学期新开始,前几天老师让我和一个学弟一起接手实验室新接的项目,老师已经把基本框架搭好了,项目是基于dva的金融类管理系统(所以表单类页面又来了)

现有代码的问题

这个管理系统涉及到很多列表类页面,而当我们将model层以视图划分时,会发现现有代码有很多很多类似的。而且,为了保持代码风格差不多,当我加入项目时,先尝试写了一个基本curd功能的表单页,发现写的很痛苦。因为,差不多只能按照他的模式来写,整个编码体验就像是戴着脚链跳舞。
而更让人难过的是,只要是基本crud功能的页面,捎带夸张一点的说,即使你完全不会dva只要按着相应流程复制粘贴代码都可以实现一个基本crud页面。

talk is cheap ,show me the code
// 后端接口
这里写图片描述
// 按照接口写好相应api

dva中,我们可以通过封装request方法来对http请求进行进一步的封装,使其更加方便和易用。 一种常见的做法是封装一个request工具函数,该函数会返回一个Promise对象,我们可以在models中的effect中使用该函数来发送网络请求。该函数可以包含一些自定义的配置参数,例如请求method、请求头、请求体等。 以下是一个基于dva的http请求封装示例代码: ```javascript import request from 'umi-request'; function http(url, options) { return request(url, options) .then(response => { if (response && response.status === 200) { return response.data; } else { throw new Error('请求失败'); } }) .catch(error => { console.error(error); throw error; }); } export default http; ``` 在上面的代码中,我们封装了一个http函数,该函数接收两个参数,分别为url和options。这两个参数与request函数的参数一致。我们使用request函数发送网络请求,并在then方法中判断请求是否成功。如果成功,我们会将请求结果返回;如果失败,我们会抛出一个错误。 在使用http函数时,我们可以通过传入options参数来自定义请求配置,例如: ```javascript http('/api/data', { method: 'post', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ name: 'test', age: 20 }) }) .then(data => { console.log(data); }) .catch(error => { console.error(error); }); ``` 在上面的代码中,我们通过传入options参数来自定义请求的method、headers和body。如果请求成功,我们会在then方法中打印请求结果;如果请求失败,我们会在catch方法中打印错误信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值