react怎么给树增加节点

react给树增加节点的方法:1、引入antd的树形控件,并通过“const treeData = […]”实现tree形组件;2、把当前节点的key值传递过去,然后遍历data数组;3、在遍历数组增加节点时,通过嵌套数组对象的查询算法实现增加节点即可。

react怎么给树增加节点 onClose(item.key, item.defaultValue)} /> onSave(item.key)} /> ); } else { item.title = ( {item.value} onEdit(item.key)} /> onAdd(item.key)} /> {item.parentKey === “0” ? null : ( onDelete(item.key)} /> )} ); } if (item.children) { return ( {renderTreeNodes(item.children)} ); } return ; }); return nodeArr; }; const onAdd = (key) => { if (expandedKeys.indexOf(key) === -1) { expandedKeyArr.push(key); } setExpandedKeys(expandedKeyArr.slice()); addNode(key, treeData); //useState里数据务必为immutable (不可赋值的对象),所以必须加上slice()返回一个新的数组对象 setData(treeData.slice()); }; const onEdit = (key) => { editNode(key, treeData); setData(treeData.slice()); }; const editNode = (key, data) => data.forEach((item) => { if (item.key === key) { item.isEditable = true; } else { item.isEditable = false; } item.value = item.defaultValue; // 当某节点处于编辑状态,并改变数据,点击编辑其他节点时,此节点变成不可编辑状态,value 需要回退到 defaultvalue if (item.children) { editNode(key, item.children); } }); const addNode = (key, data) => data.forEach((item) => { if (item.key === key) { if (item.children) { item.children.push({ value: “default”, key: nanoid(), // 这个 key 应该是唯一的 }); } else { item.children = []; item.children.push({ value: “default”, key: nanoid(), }); } return; } if (item.children) { addNode(key, item.children); } }); const onChange = (e, key) => { changeNode(key, e.target.value, treeData); setData(treeData.slice()); }; const changeNode = (key, value, data) => data.forEach((item) => { if (item.key === key) { item.value = value; } if (item.children) { changeNode(key, value, item.children); } }); const onSave = (key) => { saveNode(key, treeData); setData(treeData.slice()); }; const saveNode = (key, data) => data.forEach((item) => { if (item.key === key) { item.defaultValue = item.value; } if (item.children) { saveNode(key, item.children); } item.isEditable = false; }); const onClose = (key, defaultValue) => { closeNode(key, defaultValue, treeData); setData(treeData); }; const closeNode = (key, defaultValue, data) => data.forEach((item) => { item.isEditable = false; if (item.key === key) { item.value = defaultValue; } if (item.children) { closeNode(key, defaultValue, item.children); } }); const onDelete = (key) => { deleteNode(key, treeData); setData(treeData.slice()); }; const deleteNode = (key, data) => data.forEach((item, index) => { if (item.key === key) { data.splice(index, 1); return; } else { if (item.children) { deleteNode(key, item.children); } } }); return ( {renderTreeNodes(data)} );}

登录后复制推荐学习:《react视频教程》

以上就是react怎么给树增加节点的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2921746.html

(0)
上一篇 2025年3月11日 18:31:57
下一篇 2025年3月11日 18:32:03

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • react 安装插件就报错怎么办

    react安装插件就报错是由于从缓存中读取时不正确的完整性导致的,其解决办法:1、执行“yarn cache clean”命令;2、重新执行要安装的插件的指令操作即可。 本教程操作环境:Windows10系统、react18.0.0版、De…

    2025年3月11日
    200
  • react改变数组页面没有刷新怎么办

    react改变数组页面没有刷新是因为数组的赋值是引用传递的,其解决办法:1、打开相应的文件;2、找到“data.push(obj)”;3、使用新数组“let data = […this.state.data];”即可。 本教程操…

    2025年3月11日
    200
  • react路由跳转不刷新怎么办

    react路由跳转不刷新的解决办法:1、在路由组件最上层元素上加一个key增加路由的识别度;2、使用withRouter关联组件,代码如“render() {return (); }}export default withRouter(ro…

    2025年3月11日
    200
  • react打包图片路径错误怎么办

    react打包图片路径错误的解决办法:1、把build文件夹直接放到IIS上;2、修改index.html里面的引用资源,把“/static”前面的“/”符号去掉即可访问到页面内容。 本教程操作环境:Windows10系统、react18.…

    2025年3月11日
    200
  • react引入antd报错怎么办

    react引入antd报错的解决办法:1、通过“yarn add babel-plugin-import”下载“babel-plugin-import”;2、在babel选项中配置plugins;3、在“webpack.config.js”…

    2025年3月11日 编程技术
    200
  • react怎么改字体

    react改字体的方法:1、查看CSS3的“@font-face”属性在浏览器的兼容性;2、在assets目录下放置想要使用的字体名称;3、在“index.js”调用的“index.css”中定义“font”,然后就可以在全局使用新字体。 …

    2025年3月11日 编程技术
    200
  • react怎么移除节点

    react移除节点的方法:1、通过“import ReactDom from ‘react-dom’”引入“react-dom”;2、使用“ReactDom.render”添加节点;3、通过“let state=Re…

    2025年3月11日
    200
  • react开源吗

    react是开源的,准确来说是于2013年5月开源;React是用于构建用户界面的JavaScript库, 主要用于构建UI;你可以在React里传递多种类型的参数,如声明代码,帮助你渲染出UI、也可以是静态的HTML DOM元素、也可以传…

    2025年3月11日
    200
  • react build 路径不对怎么办

    react build路径不对的解决办法:1、找到“node_modules -> react-scripts -> config -> paths.js”;2、修改内容为“envPublicUrl || (publicU…

    2025年3月11日
    200
  • react怎么引入外部方法

    react引入外部方法的方法:1、通过import引入外部方法;2、通过react中的生命周期来引入外部方法,代码如“componentDidMount(){let scriptSrc = [‘/config/jquery.mi…

    2025年3月11日
    200

发表回复

登录后才能评论