当前位置: 首页 > news >正文

静态展示类网站旅游网站建设调研

静态展示类网站,旅游网站建设调研,金数据可以做网站吗,工程网站怎么做场景#xff1a;封装好的弹框#xff0c;按钮上加了个loading状态#xff0c;根据传入的值弹框提交的模块内容不一样。loading更新过后#xff0c;但是值没有变。 注#xff09;写法一loading不更新#xff0c;写法二loading值更新。 一、写法一 写法一中的 acceptanc…场景封装好的弹框按钮上加了个loading状态根据传入的值弹框提交的模块内容不一样。loading更新过后但是值没有变。 注写法一loading不更新写法二loading值更新。 一、写法一 写法一中的 acceptanceReject 函数是一个异步函数它会在异步操作完成后才会执行 finally 中的代码。这意味着 finally 中的 setLoading(false) 会在 acceptanceReject 函数中所有异步操作完成后才执行包括 await rejectDataDs.current?.validate()、await getTaskId(instanceId) 和 await postAcceptance(params)。 因此在写法一中即使在 acceptanceReject 函数中设置了 setLoading(true)但在 handleSubmit 函数中并没有等待 acceptanceReject 函数中的异步操作完成所以在 handleSubmit 中立即打印 loading 时可能仍然是旧值。 /** 提交 */const handleSubmit () {switch (type) {case one: oneReject();break;case two: twoReject();break;case three: fourReject();break;default:break;}};const one async () {setLoading(true);try {const validate await rejectDataDs.current?.validate();if (!validate) {return;}console.log(执行了嘛);const { id, instanceId } formDataDs.current?.toData();const taskIdValue await getTaskId(instanceId);const params: ItemAcceptance {...rejectDataDs.current?.toData(),id,instanceId,approveResult: N,taskId: taskIdValue?.[0]?.taskId,};debuggerconst res await postAcceptance(params);handleSuccess(res, acceptanceReject);} finally {setLoading(false);}};const two async () {const { id, instanceId } formDataDs.current?.toData();const { approveOpinion } rejectDataDs.current?.toData();const taskIdValue await getTaskId(instanceId);const params: DetermineParams {id,taskId: taskIdValue?.[0]?.taskId,instanceId,approveOpinion,approveResult: N,};const res await postDetermine(params);handleSuccess(res, decideReject);};const three async () {const {id,pkNo,instanceId,subInstanceId,} formDataDs.current?.toData();const { approveOpinion } rejectDataDs.current?.toData();const taskIdValue await getTaskId(subInstanceId);const params: ApprovalParams {id,pkNo,taskId: taskIdValue?.[0]?.taskId,instanceId,subInstanceId,approveResult: N,approveOpinion,};const res await postApprove(params);handleSuccess(res, approveReject);}; 解决方法因为switch中忘记加异步await了。 二写法二 写法二中所有异步操作都在同一个函数中因此 setLoading(true) 和后续的异步操作是连续执行的所以可以在后续代码中获取到正确的 loading 值。 const handleSubmit async () {setLoading(true);try {const validate await rejectDataDs.current?.validate();if (!validate) {return;}const { id, instanceId } formDataDs.current?.toData();const taskIdValue await getTaskId(instanceId);const params: ItemAcceptance {...rejectDataDs.current?.toData(),id,instanceId,approveResult: N,taskId: taskIdValue?.[0]?.taskId,};console.log(loading, loading);const res await postAcceptance(params);handleSuccess(res, acceptanceReject);} finally {setLoading(false);}}; 三、完整代码(问题版本) 封装好的完整代码如下 import {ApprovalParams,DetermineParams,ItemAcceptance, } from /interface/channelPk/main; import { languageConfig } from /language/language; import { Button, Form, message, Modal, TextArea } from choerodon-ui/pro; import DataSet from choerodon-ui/dataset/data-set/DataSet; import React, { useEffect, useState } from react; import { LabelLayout } from choerodon-ui/pro/lib/form/enum; import { ButtonColor } from choerodon-ui/pro/lib/button/enum; import {postAcceptance,postApprove,postDetermine, } from /api/channelPk/main; import {getTaskId,handleCancel,pubPath, } from /pages/channelPk/detail/hook; import { FieldType } from choerodon-ui/dataset/data-set/enum; import { useHistory } from dva; import { set } from choerodon-ui/dataset/object-chain-value;interface HandleRejectProps {visible: boolean;setVisible: (val: boolean) void;formDataDs: DataSet;type: string; }let modal: any; const RejectModel: React.FCHandleRejectProps ({visible,formDataDs,type,setVisible, }) {let history useHistory();const [loading, setLoading] useState(false);/** ds 驳回 */const rejectDataDs new DataSet({autoCreate: true,fields: [{name: approveOpinion,type: FieldType.string,label: languageConfig(rejectReason, 驳回原因),placeholder: languageConfig(planceholder.rejectReason,请输入驳回原因,),required: true,},],});useEffect(() {if (visible) {openModal();}}, [visible]);/** 弹框打开 */const openModal () {modal Modal.open({title: languageConfig(btn.reject, 驳回),okText: languageConfig(btn.confirm, 确定),closable: true,children: Box /,footer: (div style{{ textAlign: right }}Buttonloading{loading}color{ButtonColor.primary}onClick{() handleSubmit()}{languageConfig(btn.confirm, 确定)}/ButtonButtonloading{loading}onClick{() {modal.close();setVisible(false);}}{languageConfig(btn.cancel, 取消)}/Button/div),});};/** 内容 */const Box () {return (div classNameltc-c7n-stylediv classNamecustomerdiv classNameborder/divFormdataSet{rejectDataDs}labelWidth{80}columns{4}labelLayout{LabelLayout.vertical}classNamerejectTextAreanameapproveOpinionrows{4}colSpan{4}newLine{true}// maxLength{200}showLengthInfoclearButton//Form/div/div);};/** 提交 */const handleSubmit async () {const validate await rejectDataDs.current?.validate();if (!validate) {return;}setLoading(true);switch (type) {case acceptance: // 受理驳回await acceptanceReject();break;case decide: // 判定驳回await decideReject();break;case one: // 战区内未确权-一级审批await oneReject();break;case two: // 战区内未确权-二级审批await twoReject();break;case four: // 战区内已确权-二级审批await fourReject();break;case seven: // 跨战区await sevenReject();break;default:break;}};/** 【受理】驳回 */const acceptanceReject async () {const { id, instanceId } formDataDs.current?.toData();const taskIdValue await getTaskId(instanceId);const params: ItemAcceptance {...rejectDataDs.current?.toData(),id,instanceId,approveResult: N,taskId: taskIdValue?.[0]?.taskId,};const res await postAcceptance(params);handleSuccess(res, acceptanceReject);};/** 【判定】驳回(跨战区) */const decideReject async () {const { id, instanceId } formDataDs.current?.toData();const { approveOpinion } rejectDataDs.current?.toData();const taskIdValue await getTaskId(instanceId);const params: DetermineParams {id,taskId: taskIdValue?.[0]?.taskId,instanceId,approveOpinion,approveResult: N,};const res await postDetermine(params);handleSuccess(res, decideReject);};/** 【战区内未确权-一级审批】驳回 */const oneReject async () {const {id,pkNo,instanceId,subInstanceId,} formDataDs.current?.toData();const { approveOpinion } rejectDataDs.current?.toData();const taskIdValue await getTaskId(subInstanceId);const params: ApprovalParams {id,pkNo,taskId: taskIdValue?.[0]?.taskId,instanceId,subInstanceId,approveResult: N,approveOpinion,};const res await postApprove(params);handleSuccess(res, approveReject);};/** 【战区内未确权-二级审批】驳回 */const twoReject async () {const {id,pkNo,instanceId,subInstanceId,} formDataDs.current?.toData();const { approveOpinion } rejectDataDs.current?.toData();const taskIdValue await getTaskId(subInstanceId);const params: ApprovalParams {id,pkNo,taskId: taskIdValue?.[0]?.taskId,subInstanceId,instanceId,approveOpinion,approveResult: N,};const res await postApprove(params);handleSuccess(res, approveReject);};/** 【战区内已确权-二级审批-一致】驳回 */const fourReject async () {const {id,pkNo,instanceId,subInstanceId,} formDataDs.current?.toData();const { approveOpinion } rejectDataDs.current?.toData();const taskIdValue await getTaskId(subInstanceId);const params: ApprovalParams {id,pkNo,taskId: taskIdValue?.[0]?.taskId,subInstanceId,instanceId,approveOpinion,approveResult: N,};const res await postApprove(params);handleSuccess(res, approveReject);};/** 【跨战区-审批】驳回 */const sevenReject async () {const {channelRemoveId,pkNo,subInstanceId,instanceId,} formDataDs.current?.toData();const { approveOpinion } rejectDataDs.current?.toData();const taskIdValue await getTaskId(subInstanceId);const params: ApprovalParams {id: channelRemoveId,pkNo,taskId: taskIdValue?.[0]?.taskId,subInstanceId,instanceId,approveOpinion,approveResult: N,};const res await postApprove(params);handleSuccess(res, approveReject);};/** 公共回调 */const handleSuccess (res: any, kind: string) {setLoading(false);if (res 操作成功) {message.success(res, undefined, undefined, top);modal.close();handleCancel();history.replace(${pubPath}/success?from${kind});} else {message.warning(res.message, undefined, undefined, top);}};return /; };export default RejectModel;
http://www.w-s-a.com/news/68549/

相关文章:

  • 电脑上不了建设厅网站常德网站建设费用
  • 做单页免费模板网站最新办公室装修风格效果图
  • 中国铁路建设投资公司网站熊学军想开网站建设公司
  • 优化一个网站多少钱网站开发北京
  • html教学关键词优化价格
  • 黄冈论坛网站有哪些给wordpress首页添加公告栏
  • 初中做数学题的网站做淘宝必备网站
  • 买拆车件上什么网站谁有那种手机网站
  • 一家专做有机蔬菜的网站万户网络是干嘛的
  • 十堰百度网站建设八宝山做网站公司
  • 地区电商网站系统建筑施工图纸培训班
  • 网站外包维护一年多少钱医院网站 功能
  • 电子商务市场的发展前景seo推广平台服务
  • 乐清网页设计公司哪家好seo推广任务小结
  • 360建筑网是什么pc优化工具
  • 越秀免费网站建设风景区网站建设项目建设可行性
  • 网站建站公司一站式服务学校网站开发招标
  • asp.net mvc 5 网站开发之美电商网站 流程图
  • 室内设计素材网站推荐郑州专业做淘宝网站建设
  • 新建的网站怎么做seo优化模板规格尺寸及价格
  • 平湖网站设计做电子元器件销售什么网站好
  • 可视化网站模板我想建个网站网站怎么建域名
  • 达州网站建设qinsanw南京市建设发展集团有限公司网站
  • django 网站开发实例公司排行榜
  • 韩国做美食网站阳江网站建设 公司价格
  • 网站开发哪里接业务长春高端模板建站
  • 深圳网站制作公司方案dw一个完整网页的代码
  • asp手机网站源码下载做seo推广网站
  • 网站优化建议怎么写网站维护主要有哪些内容和方法
  • 建设网站需要钱吗网络推广加盟