首页 > 其他分享 >后端返回的值,不能直接用于表单展示,有的表单项的值是根据其他表单项计算出来的,有的是根据下拉框的选中项的其他属性获取到的,这时候该如何处理?还有最后要保存的时候,传给后端的值,与表单的数据结构也不一样

后端返回的值,不能直接用于表单展示,有的表单项的值是根据其他表单项计算出来的,有的是根据下拉框的选中项的其他属性获取到的,这时候该如何处理?还有最后要保存的时候,传给后端的值,与表单的数据结构也不一样

时间:2024-03-15 23:33:56浏览次数:35  
标签:... const 表单 单项 数据结构 下拉框

后端返回的值,不能直接用于表单展示,有的表单项的值是根据其他表单项计算出来的,有的是根据下拉框的选中项的其他属性获取到的,这时候该如何处理?还有最后要保存的时候,传给后端的值,与表单的数据结构也不一样,有的甚至没有放在表单属性上,比如当前下拉框选中的对象而非id,整个需要传给后端

在这种情况下,处理方法如下:

  1. 计算型表单项
    • 对于那些根据其他表单项计算出来的值,可以在前端进行相应的逻辑处理。创建一个计算属性或者使用 useEffect hook 来监听相关表单项的变化,并基于这些变化实时计算出结果,然后将结果设置到对应的表单字段上。
const [formValues, setFormValues] = useState({
  input1: '',
  input2: '',
  computedValue: ''
});

useEffect(() => {
  const calculatedValue = // 根据input1和input2的值进行计算
  setFormValues(prevState => ({ ...prevState, computedValue: calculatedValue }));
}, [formValues.input1, formValues.input2]);
  1. 下拉框关联数据
    • 当下拉框的选项包含对象(不只是ID),且需要整个对象传给后端时,在选择事件中保存选中的完整对象,并在提交时传递整个对象。
const [selectedOption, setSelectedOption] = useState(null);

// 在下拉框的选择事件中
const handleSelectChange = (value) => {
  setSelectedOption(value);
};

// 提交表单时,除了其他表单数据,也包含这个选中项的对象
const onSubmit = async (event) => {
  event.preventDefault();
  
  const formData = { ...formValues, selectedOption };
  try {
    await saveToBackend(formData);
  } catch (error) {
    console.error('Error saving data:', error);
  }
};
  1. 转换表单数据结构
    • 如果后端需要的数据结构与表单展示的数据结构不一致,可以定义一个转换函数来适配。在提交前对表单数据进行预处理。
const transformFormDataForBackend = (formData) => {
  // 根据需求调整formData的结构,例如从{id: '...', name: '...'}转为{name: '...', optionId: '...'}
  return transformedData;
};

const onSubmit = async (event) => {
  event.preventDefault();

  const transformedData = transformFormDataForBackend({ ...formValues, selectedOption });
  try {
    await saveToBackend(transformedData);
  } catch (error) {
    console.error('Error saving data:', error);
  }
};

通过上述方式,你可以动态处理表单数据,包括计算属性、关联对象以及数据结构转换,确保数据既能正确展示,也能准确无误地发送到后端。

标签:...,const,表单,单项,数据结构,下拉框
From: https://www.cnblogs.com/longmo666/p/18076487

相关文章

  • React-hook-form-mui(二):表单数据处理
    前言在上一篇文章中,我们介绍了react-hook-form-mui的基础用法。本文将着表单数据处理。react-hook-form-mui提供了丰富的表单数据处理功能,可以通过watch属性来获取表单数据。Demo下面是一个使用watch属性的例子:importReactfrom'react';import{useForm}from're......
  • el-menu 点击有子元素的菜单项字体变色
    效果图: el-menu组件只是在点击跟元素时,根元素变色,如图:.el-menu-item.is-active{background-color:rgb(56,96,226)!important;color:white;} 点击有子元素的菜单时不会变色,下面可以实现:(点击有子元素菜单时,会有一个class属性is-opened,所以给其编辑样式即......
  • Vue2/3 实现动态循环的select下拉框去重功能:
    需求:前面下拉框选择某个选项(如:1)了,后面的下拉框不能在有前面选中内容的该选项(即不能在出现1的下拉选项)【Vue实现动态循环出的多个select不能重复选择相同的数据】注:下面注释的都可以根据需求更改 代码<template><divid="app"><divv-fo......
  • 注意!运用表单流程管理可一起实现提质增效
    经常会有客户在我们面前抱怨:到底用什么样的方法和软件,才能实现高效率的办公?其实,大家不必苦恼。因为低代码技术平台服务商流辰信息将会给大家推荐表单流程管理的实用性,它的灵活简便、易操作等优势特点,可以帮助大家实现高效率办公,创造更高市场价值。今天,我们一起来了解表单流程管理......
  • Taro微信小程序使用表单组件rc-field-form
    安装rc-field-formyarnaddrc-field-form使用import{View,Button,Input}from"@tarojs/components";importForm,{Field,useForm}from"rc-field-form";exportdefaultfunctionInstallParameter(){const[form]=useForm();co......
  • 《手把手教你》系列技巧篇(三十二)-java+ selenium自动化测试-select 下拉框(详解教程)
    1.简介 在实际自动化测试过程中,我们也避免不了会遇到下拉选择的测试,因此宏哥在这里直接分享和介绍一下,希望小伙伴或者童鞋们在以后工作中遇到可以有所帮助。2.select下拉框2.1Select类1.在Selenium中,针对html的标签select多选下拉列表有几种方法:selectByIndex(index);......
  • Vue:表单修饰符(.lazy/.number/.trim)
    一、v-model.lazy默认情况下,v-model 会在每次 input 事件后更新数据。也就是说在每次输入时都会改变绑定的值。例如,在下面的代码中,每次在输入框中输入时,number都会立即改变{{number}}<inputtype="text"v-model="number"/>有时候我们希望在一次输入结束后再......
  • Vue-手动清空Form表单的验证及验证提示(红字提示)
    问题:form表单清空校验,使用系统方法clearValidate和resetFields这两个方法清空校验的时候,无法清除。解决办法:在this.$nextTick这个方法里边调用clearValidate/resetFields这两个方法。this.$nextTick(function(){this.$refs.formRefs.clearValidate();})由于DOM......
  • 快看!提高效率,还得看工作流表单引擎
    经常有客户会问我们:究竟用什么样的工具才能打破信息孤岛,让大家互联联络起来?其实,说到这,有不少人会联想到低代码技术平台。不错,在快节奏的发展社会中,高效率的办公目的已经是大家的追求和发展目标了。想要实现这样的目标,低代码技术平台、工作流表单引擎值得去了解和应用。1、低代码......
  • 可视化表单流程编辑器为啥好用?
    想要提升办公率、提高数据资源的利用率,可以采用可视化表单流程编辑器的优势特点,实现心中愿望。伴随着社会的进步和发展,提质增效的办公效果一直都是很多职场办公团队的发展需求,作为低代码技术平台服务商,流辰信息团队严守创新研发的理念,为行业的数字化转型发展之路全力护航,提供可视......