前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >react-开发经验分享-树形结构的解析与运用(二)

react-开发经验分享-树形结构的解析与运用(二)

作者头像
Mr. 柳上原
发布2018-12-28 16:12:34
9380
发布2018-12-28 16:12:34
举报

Author:Mr.柳上原

  • 付出不亚于任何的努力
  • 愿我们所有的努力,都不会被生活辜负
  • 不忘初心,方得始终

ant框架里,tree结构的剖析 承接上文 问题:ant的异步树形结构,当渲染下级结构完成后,再次在主干新建一个新的下级结构时,不会实时渲染出新增加的那条下级结构,必须刷新整个页面,重新后端请求数据,并进行渲染,这是一个不好的体验 3.根据ant的tree结构,自定义实时渲染tree结构页面 思路:使用递归模式

代码语言:javascript
复制
// 实时显示下级页面的变化实例
// 封装函数:新增下级结构
/*
tree为当前已经被渲染出来的所有tree结构(根据ant框架自带的onLoadData方法实时获取)
id为新增的treeChildren的上级id属性(根据ant框架自带的onSelect方法的参数info获取)
addData为新增的treeChildren的属性(根据新增时填写的form表单获取)
*/
const add = (tree = [], id = '', addData = {}) => {
      tree.forEach((item, index) => {
        if (item.id === id) {
          const children = tree[index].children || []
          children.push(addData)
        } else {
          add(item.children, id, addData)
        }
      })
    }
代码语言:javascript
复制
// 封装函数:修改下级结构
/*
tree为当前已经被渲染出来的所有tree结构(根据ant框架自带的onLoadData方法实时获取)
id为修改的treeChildren的id属性(根据ant框架自带的onSelect方法的参数info获取)
editData为修改的treeChildren的属性(根据修改时填写的form表单获取)
*/
const edit = (tree = [], id = '', editData = {}) => {
      tree.forEach((item, index) => {
        if (item.id === id) {
          tree[index] = {...item, ...editData}
        } else {
          edit(item.children, id, editData)
        }
      })
    }
代码语言:javascript
复制
// 封装函数:删除下级结构
/*
tree为当前已经被渲染出来的所有tree结构(根据ant框架自带的onLoadData方法实时获取)
id为新增的treeChildren的id属性(根据ant框架自带的onSelect方法的参数info获取)
*/
const del = (tree = [], id = '') => {
      tree.forEach((item, index) => {
        if (item.id === id) {
          tree.splice(index, 1);
        } else {
          del(item.children, id);
        }
      })
    }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.12.21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档