基于react的MQ管理系统遇到的问题以及解决办法
跟一般的管理系统差不多
一、需求
1.新增申请和修改的弹窗里面的部门跟应用组改成下拉框,并调取后台接口获取到相应的值。
1.1相应的代码
// 获取部门
getDepartment = () => {
promiseAjax.get('/org/departments/findDeptList?level=4').then(res => {
if (res.code === '0') {
let productDeptObj = this.state.productDeptObj;
res.data.forEach(item => {
productDeptObj[item.id] = item;
});
console.log(productDeptObj, 'q1111');
this.setState({productDept: res.data || [], productDeptObj});
} else {
message.error(res.message);
}
});
}
form表单里面
<Select onChange={this.handleChangeProductDept}>
{
productDept.map(item => {ß
return <Option key={item.id} value={item.id}>{item.deptName}</Option>;
})
}
</Select>
// 获取应用组
handleChangeProductDept = (id) => {
const {setFieldsValue} = this.props.form;
setFieldsValue({productGroupProduct: undefined});
promiseAjax.get(`/org/thirdparty/dept/group?id=${id}&level=5`).then(res => {
if (res.code === '0') {
let productGroupObj = this.state.productGroupObj;
res.data.forEach(item => {
productGroupObj[item.id] = item;
});
this.setState({productGroup: res.data, productGroupObj});
} else {
message.error(res.message);
}
});
}
form表单里面
<Select>
{
productGroup.map(item => {
return <Option key={item.id} value={item.id}>{item.name}</Option>;
})
}
</Select>
在state里面声明productDept:[],productGroup:[],请求成功this.setState({productGroup/productDept:res.data});
在表单中分别遍历两个数组
获取部门数据后台参数
data: [{id: "1231648600", deptName: "商户事业部"}, {id: "1746345310", deptName: "综合管理部"},…]
0: {id: "1231648600", deptName: "商户事业部"}
1: {id: "1746345310", deptName: "综合管理部"}
2: {id: "1879685755", deptName: "研发部"}
3: {id: "1889850226", deptName: "人事行政部"}
4: {id: "688950687", deptName: "财务部"}
此时item是data的每一组对象,也就是01234中的所有值,所以展示出来的部门名称是item.deptName,此时的value是item.id
获取应用组数据后台参数
data: [{id: "1388050926", name: "招聘组"}, {id: "1311206076", name: "发展组"}]
0: {id: "1388050926", name: "招聘组"}
1: {id: "1311206076", name: "发展组"}
此时的item同上,所以展示出来的应用组名称是item.name,此时的value 是item.id
二、遇到的问题以及解决办法
1.在向后台传递参数的时候,后台需要4个参数,分别是部门名称、部门id、应用组名称、应用组id,而此时表单中获取到的是部门id和应用组id,所以我们必须通过这个id去获取到对应的name,
但是通过后台传递的数据可以看出id和name是同级并列的,看似没有任何关系,那么如何获取
以部门为例:我们可以知道现在id和deptName是包在同一个对象里面的,那么首先我声明一个空的对象producDeptObj{},
然后在获取部门的方法里遍历
res.data.forEach(item => {
productDeptObj[item.id] = item; 将数组的整体赋给id,此时的id里面包含id和deptName,
接下来如果想获取到name 只需productDeptObj[item.id].name就可以了。
});
在点击提交的时候 const department = this.state.productDeptObj[fieldsValue.department1].deptName; // 获取到部门名称
const department = this.state.productDeptObj[values.department1] ? this.state.productDeptObj[fieldsValue.department1].deptName : '';
// 做一个判断,如果后台数据有问题 为了防止报错,先判断一下
this.state.productDeptObj[values.department1]是否可以取到,
如果可以再去取对应的name,如果取不到就返回一个空。
注意⚠️
this.state.productDeptObj[values.department1] 之所以可以用this.state可以取到 productDeptObj,
是因为在获取部门的方法里面 setState了productDeptObj
this.setState({productDept: res.data || [], productDeptObj});
以上是我在做项目的时候遇到的问题,可能很简单,但是当时也是把自己难住了,希望可以帮助遇到以上问题的小伙伴们,第一次写博客还有很多不足之处,希望多多包涵!
基于react的MQ管理系统遇到的问题以及解决办法的更多相关文章
- 基于ABP的应用执行Update-Database出现异常的解决办法
今天在QQ群中看到有网友在更新数据库执行Update-Database时出现下面的错误: 为了能让搜索引擎搜索到,特意加上该错误的文字说明: 在与 SQL Server 建立连接时出现与网络相关的或特 ...
- react native 运行项目下载gradle慢的解决办法
react-native run-android 慢 React-native run-Android中需要下载https://services.gradle.org/distributions/gr ...
- 基于 React.js + Redux + Bootstrap 的 Ruby China 示例 (转)
一直学 REACT + METEOR 但路由部分有点问题,参考一下:基于 React.js + Redux + Bootstrap 的 Ruby China 示例 http://react-china ...
- easyconf——基于AugularJS的配置管理系统开发框架
目录 1 easyconf的诞生2 easyconf的设计理念 2.1 总体设计 2.2 细节设计 2.2.1 CRUD操作 2.2.2 即时校验 2.2.3 下拉框设计3 easyconf使用指南 ...
- RSuite 一个基于 React.js 的 Web 组件库
RSuite http://rsuite.github.io RSuite 是一个基于 React.js 开发的 Web 组件库,参考 Bootstrap 设计,提供其中常用组件,支持响应式布局. 我 ...
- 基于React Native的Material Design风格的组件库 MRN
基于React Native的Material Design风格的组件库.(为了平台统一体验,目前只打算支持安卓) 官方网站 http://mrn.js.org/ Github https://git ...
- 基于ArcEngine的影像数据管理系统研制
基于ArcEngine的影像数据管理系统研制 如果批处理,速度很慢,效率低. 详情如下: 分成很多小块的影像数据,要达到连续显示的效果,并导入ArcSDE for SQL Server中以方便管理.在 ...
- 【课程分享】基于plusgantt的项目管理系统实战开发(Spring3+JDBC+RMI的架构、自己定义工作流)
基于plusgantt的项目管理系统实战开发(Spring3+JDBC+RMI的架构.自己定义工作流) 课程讲师:张弘 课程分类:Java 适合人群:中级 课时数量:37课时 用到技术:Spring ...
- 基于react全家桶+antd-design+webpack2+node+express+mongodb开发的前后台博客系统
很久没更新博客,最近也有点忙,然后业余时间搞了一个比较完整基于react全家桶+antd-design+webpack2+node+express+mongodb开发的前后台博客系统的流程系统,希望对 ...
随机推荐
- 我的第一篇博客。(JavaScript的声明和数据类型的一些笔记)
这是我的第一篇博客,务必请大家多多关照. 下面是前端js的变量和数据类型的一些笔记,不是很全请多多包涵. 1.变量 变量的声明 var 变量名 变量这个容器中放的是数据 变量的赋值 变量名 = 数据 ...
- myeclipse中tomcat配置虚拟路径,用于存储及上传图片
由于双击tomcat后只出现了overview窗口,没有出现Models窗口,如下图所示,故eclipse中的方法不能用. 采用另一种方法 在自己的tomcat的安装目录下 ( 我安装目录的是 D:\ ...
- 通过java代码往mysql数据库中写入日期相关数据少13个小时
通过show variables like '%time_zone%'; 查看时区: CST 时区 名为 CST 的时区是一个很混乱的时区,有四种含义: 美国中部时间 Central Standard ...
- 【MVC】ASP.NET MVC之数据验证
前端传到后端数据的不可信任性,DRY("Don't Repeat Yourself") 设计原则.MVC3.0出了后端数据验证特性,鼓励你只定义一次功能或行为,然后在应用程序中各处 ...
- 使用Selenium模块报错的解决办法 (FileNotFound,WebDriverException)
添加Chrome浏览器程序的目录到系统Path变量中: C:\Users\%USERNAME%\AppData\Local\Google\Chrome\Application ,使用pip3 inst ...
- R语言查看栅格值
有这么一个需求,知道栅格上的坐标,想看看这个坐标上的栅格值是多少.坐标长这个样子 那么这样的坐标下的栅格值该怎么看 cellFromXY(the.stack$t1,c( -1505000,683500 ...
- 2018-2019-2 网络对抗技术 20165303 Exp4 恶意代码分析
实践目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysinternals,systr ...
- 如何使用git拉取代码及提交代码(详细)
分享给刚进入公司的小伙伴们鸭! 第一步:首先在本地安装git和TorToiseGit小乌龟,svn同理,也可以安装下TorToiseGit中文语言包,前期可减少出错,后期熟悉了可直接用命令行pull代 ...
- SYN-flood攻击
原理:当TCP三次握手进行第一次握手时,客户端向服务端发送SYN请求报文,第二次握手服务端会返回一个SYN+ACK的一个确认报文,syn-flood攻击就发生在第三次握手,当客户端不去回应服务端的SY ...
- 记一次阿里云ECS服务器图片资源迁移至 阿里云 oss
系统用户上传的图片资源放在ECS服务器,图片要做cdn加速,图片量越来越大(第一年200G,还在用户再增加图片量疯狂增长)备份是个问题. 决定迁移至 oss.前端直接上传oss 后台做签名,回调入库图 ...