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

Antd React Form.Item内部是自定义组件怎么自定义返回值

  • 在线演示
  • https://stackblitz.com/edit/stackblitz-starters-xwtwyz?file=src%2FSelfTreeSelect.tsx

需求

  • 当我们点击提交,需要返回用户名和选中树的id信息,但是,我不关要返回树的id信息,还需要返回选中树的名称
//默认返回的
{userName:'梦洁',treeInfo:'leaf1-value'
}
//但是需要返回的如下
{userName:'梦洁'treeInfo:{name:'leaf1-name',value:'leaf1-value'}
}

做法

了解下Form.Item怎么获取值的

  • 大概就是这样子

实现自定义

  • 主组件index.tsx
import {Form,Input,Button} from "antd";
import SelfTreeSelect from "../../component/SelfTreeSelect";const Index = () => {const [form] = Form.useForm();const onFinish = (values: any) => {console.log('Success:', values);};/*初始化值*/const setInitValue = () => {form.setFieldsValue({username:'梦洁',treeInfo:{value:'leaf1-value',//这里传入数组是因为对于树来说,可以多选,所以后端保存的值也可能是数组,list:['leaf1-title']}})}return (<><Formform={form}name="basic"onFinish={onFinish}><Form.Itemlabel="用户名"name="username"rules={[{required: true, message: 'Please input your username!'}]}><Input/></Form.Item>{/*自定义组件*/}<Form.Itemname="treeInfo"label="树的信息"><SelfTreeSelect/></Form.Item><Form.Item ><Button type="primary" htmlType="submit">Submit</Button></Form.Item></Form><Button onClick={setInitValue}>点击我初始化值</Button></>);
};export default Index;
  • 自定义组件SelfTreeSelect.tsx
import React, {useEffect, useState} from 'react';
import { TreeSelect } from 'antd';
const treeData = [{value: 'parent 1-value',title: 'parent 1-title',children: [{value: 'parent 1-0-value',title: 'parent 1-0-title',children: [{value: 'leaf1-value',title: 'leaf1-title',},{value: 'leaf2-value',title: 'leaf2-title',},],},],},
];
/* 默认值,初始值?form设置值 */
const SelfTreeSelect = (props:any) => {const { value,onChange } = props;console.log('查看传入的值',props)/*这里简单演示下回填值*/useEffect(() => {setCurrentValue(value?.list[0])}, [props]);/*内部值,这样子就可以设置这个值来实现默认值的操作了*/const [currentValue, setCurrentValue] = useState<string>();const onSelectChange = (newValue: string,selectList:never[]) => {console.log('输出新值第一个为选中的value,第二个为选中的title数组',newValue,selectList)setCurrentValue(newValue);onChange({value:newValue,list:selectList,})};return (<TreeSelectshowSearchstyle={{ width: '100%' }}value={currentValue}dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}placeholder="Please select"allowCleartreeDefaultExpandAllonChange={onSelectChange}treeData={treeData}/>);
};export default SelfTreeSelect;

相关文章:

  • Terraform Chef Puppet
  • 算法导论笔记5:贪心算法
  • 【Unity】简单案例脚本实现 | 鼠标观察/键盘控制移动飞行/行走/碰撞检测
  • ZZ308 物联网应用与服务赛题第H套
  • 【Git企业开发】第六节.配置 Git和标签管理
  • 【ES专题】ElasticSearch功能详解与原理剖析
  • 灰度与二值化
  • android studio离线tips
  • 【机试题】编写一个Java函数,实现批量获取数据的功能
  • uniapp 本身就是一个坑,里面还有无数的小坑
  • odoo16前端框架源码阅读——启动、菜单、动作
  • 【Delphi】 各个平台使用 ntfy 效果说明
  • laravel8-rabbitmq消息队列-实时监听跨服务器消息
  • 使用venv 创建虚拟环境
  • 如何安装Node.js? 创建Vue脚手架
  • [译] 怎样写一个基础的编译器
  • Android框架之Volley
  • CEF与代理
  • Docker容器管理
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • PermissionScope Swift4 兼容问题
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Redis中的lru算法实现
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • Shell编程
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 复杂数据处理
  • 机器学习 vs. 深度学习
  • 三分钟教你同步 Visual Studio Code 设置
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 最近的计划
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (4)Elastix图像配准:3D图像
  • (分布式缓存)Redis哨兵
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (转)Sublime Text3配置Lua运行环境
  • (转)拼包函数及网络封包的异常处理(含代码)
  • .net Stream篇(六)
  • .net 调用php,php 调用.net com组件 --
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .NET中统一的存储过程调用方法(收藏)