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

深圳企业做网站公司有哪些建筑工程造价网

深圳企业做网站公司有哪些,建筑工程造价网,如何迁移wordpress,代理公司注册服务在写一个表单时使用了antd的 TreeSelect#xff0c;在对TreeSelect的值提交时发现#xff0c;父节点的值在半选状态时未提交#xff0c;在选中状态时#xff08;子节点全选#xff09;#xff0c;子节点不提交#xff0c;只提交父节点#xff0c;这与后端需求不符…在写一个表单时使用了antd的 TreeSelect在对TreeSelect的值提交时发现父节点的值在半选状态时未提交在选中状态时子节点全选子节点不提交只提交父节点这与后端需求不符后端要求提交全部的节点所有手动改造了一下以适应需求组件代码如下   import { TreeSelect } from antd; import React, { useState, useEffect } from react;export type FromTreeItem {key?: number | string;title?: string;parentKey?: number | string;value?: number | string;children?: FromTreeItem[]; };export type FromTreeSelectProps {value?: any;treeData?: FromTreeItem[];onChange?: (value: any) void; };/** * 解决antd TreeSelect 返回值不包含父节点问题 * param props * returns */ const FromTreeSelect: React.FCFromTreeSelectProps (props) {const [selectedKeys, setSelectedKeys] useState(string | number)[]([]);const [treeDataMap, setTreeDataMap] useStateRecordstring | number, FromTreeItem({});const treeToMap (tree: FromTreeItem[]): Recordstring | number, FromTreeItem {const map: Recordstring | number, FromTreeItem {};const traverse (nodes: FromTreeItem[]) {nodes.forEach(node {node.key ? map[node.key] node : null; // 将当前节点添加到映射中 if (node.children) {traverse(node.children); // 递归遍历子节点 }});};traverse(tree); // 从根节点开始遍历 return map;};useEffect(() {if (props.treeData)setTreeDataMap(treeToMap(props.treeData))}, [props.treeData]);useEffect(() {// 初始化 selectedKeys if (props.value treeDataMap) {setSelectedKeys(getAllChildrenKey(props.value));}}, [treeDataMap, props.value]);/** * 根据选中的key找到所有父节点key并一起返回 * param selectKeys */const getAllNodeKey (selectKeys: (string | number)[]): (string | number)[] {const allKeys new Setstring | number(selectKeys);;const traverse (node: FromTreeItem) {if (node.parentKey) {allKeys.add(node.parentKey)traverse(treeDataMap[node.parentKey])}};selectKeys.forEach(key {traverse(treeDataMap[key])});return Array.from(allKeys);};/** * 根据给定的值 找到给定节点是否选中了子节点如选中了子节点则删除当前节点* param keys * param tree */const getAllChildrenKey (keys: (string | number)[]): (string | number)[] {if (!keys)return []const allKeys new Setstring | number(keys);keys.forEach(key {const node: FromTreeItem treeDataMap[key];if (node.children) {node.children.forEach((child) {if (node.key allKeys.has(node.key) child.key allKeys.has(child.key)) {allKeys.delete(node.key)}});}})return Array.from(allKeys);};const handleChange (newKeys: (string | number)[]) {setSelectedKeys(newKeys);if (props.onChange) {props.onChange(getAllNodeKey(newKeys));}};const { SHOW_ALL } TreeSelect;return (TreeSelecttreeCheckabletreeData{props.treeData}value{selectedKeys}onChange{handleChange}showCheckedStrategy{SHOW_ALL}/); };export default FromTreeSelect; 使用方式同antd的其他组件如   Form.Itemname{menuIds}label{菜单}rules{[{ required: true }]}FromTreeSelect treeData{menuTreeData} //Form.Item
http://www.hkea.cn/news/14430402/

相关文章:

  • 网站做标签阿里云建站售前咨询
  • 效果图网站模板123网页浏览器
  • 做网站项目的心得网站建设插件代码大全
  • 郑州企业网站如何建设红河优才网站建设
  • 网站百度收录秒收方法seo实战培训课程
  • 网站建设有什么优势网站优化的论文
  • 2023年php凉透了关键词优化推广排名
  • 营销网站占用多少m空间个人网站建设法律规定
  • 短视频网站的动画是怎么做的北京赛车网站开发多少钱
  • 网站的更新与维护wordpress阿里云建站
  • 可以做图的网站跑腿网站建设
  • 获取网站物理路径番禺网站开发哪家好
  • 重庆手机微信网站建设建站行业有前途
  • 网站建设与维护百科电脑做网站服务器WIN7 买个域名
  • 重庆网站建设必选承越wordpress之家
  • 上手机淘宝网站建设服务器搭建vps教程
  • 番禺制作网站企业网址设计公司
  • 外贸网站模板建设个人网站源码模板
  • 坑梓网站建设如何宜春网站制作
  • 网站怎么快速排名洛阳又发现一例
  • 网站与公众号的区别无锡做装修网站
  • 网站建设上传与发布流程河北搭建营销型网站
  • 怎么做舞曲网站做网站含营销
  • 网站建设中中文模板淘宝客网站开发定制
  • 广州 网站开发 公司温州注册网络公司价格多少
  • 企业网站开发项目策划书网站怎样做外链
  • 网站转化低的原因今天最新的招聘信息
  • 新手做电影网站最近发生的新闻事件
  • wordpress 添加登录界面网站 seo 优化 效果
  • 徐州市网站深圳企业官网网站建设哪家好