一个异步加载的tree组件初始状态是这样:

此时的treeData是:

treeData: [

{

title: 'Expand to load', key: '0', children: [

{ title: 'child', key: '0-0', isLeaf: false }

]

}

]

点击+号,模拟异步请求数据,扩展成这样:

此时的状态是:

treeData: [

{

title: 'Expand to load', key: '0', children: [

{ title: 'child', key: '0-0', isLeaf: false ,children:[

{ title: 'Child Node', key: "0-0-0" },

{ title: 'Child Node', key: "0-0-1" }

]}

]

}

]

然后,此时点击按钮,希望返回初始状态:

treeData: [

{

title: 'Expand to load', key: '0', children: [

{ title: 'child', key: '0-0', isLeaf: false }

]

}

]

但是实际结果是:

问题是:

child前面并不是+号(不能点击),但是状态isLeaf设置的是false

Expand to load展开了,希望的是不展开

感觉是Tree组件并没有重新渲染,而是在原来的基础上update state。求助怎么解决?

主要代码:

import React from 'react';

import ReactDOM from 'react-dom';

import './index.css';

import { Tree } from 'antd';

const TreeNode = Tree.TreeNode;

class Demo extends React.Component {

state = {

treeData: [

{

title: 'Expand to load', key: '0', children: [

{ title: 'child', key: '0-0', isLeaf: false }

]

}

],

}

onLoadData = (treeNode) => {

return new Promise((resolve) => {

if (treeNode.props.children) {

resolve();

return;

}

setTimeout(() => {

console.log(treeNode);

treeNode.props.dataRef.children = [

{ title: 'Child Node', key: `${treeNode.props.eventKey}-0` },

{ title: 'Child Node', key: `${treeNode.props.eventKey}-1` },

];

this.setState({

treeData: [...this.state.treeData],

});

resolve();

}, 1000);

});

}

btnClick = () => {

this.setState({

treeData: [

{

title: 'Expand to load', key: '0', children: [

{ title: 'child', key: '0-0', isLeaf: false }

]

}

],

});

}

renderTreeNodes = (data) => {

return data.map((item) => {

if (item.children) {

return (

{this.renderTreeNodes(item.children)}

);

}

return ;

});

}

render() {

return (

{this.renderTreeNodes(this.state.treeData)}

更新treedata

);

}

}

ReactDOM.render(, document.getElementById('root'));

如果需要的话,可以到这边直接下载demo:https://github.com/wyzgo/antd_test.git

关闭ant的tree_ant-design Tree组件问题相关推荐

  1. ant design vue 组件 Tree

    ant design vue 组件 Tree 实现效果: 实现代码: <div class="tree"><a-treeshow-iconshow-line:lo ...

  2. Ant Design Blazor 组件库的路由复用多标签页介绍

    前言 Blazor 是 .NET 最新的前端框架,可以基于 WebAssembly 或 SignalR (WebSocket)构建前端应用程序,基于 WebAssembly 托管模型的 Blazor ...

  3. 【前端笔记】Ant Design Form组件 resetFields() 与 setFieldsValue() 之比较

    Ant Design Form组件 resetFields() 与 setFieldsValue() 之比较 关键词:React,Ant Design,Form组件,组件渲染 一.问题描述 Form ...

  4. ant design Menu组件子菜单样式设置

    ant design Menu组件子菜单样式设置 Menu二级子菜单宽度较宽,直接设置width不起作用,会被他自带的min-width覆盖 解决办法:设置组件的全局样式,提升优先级,如下所示: &l ...

  5. 【vue2中引入阿里第三方图标库使用自定义的Ant Design Vue组件a-cascader级联选择后缀图标】

    1,首先在vue2项目中安装ant design vue组件 npm install ant-design-vue@1.7.2 2,a-cascader组件在页面中的使用 <template&g ...

  6. Ant Design Vue 组件@chang绑定方法如何传递自定义参数

    Ant Design Vue 组件@chang绑定方法如何传递自定义参数 今天在写代码的时候遇到一个问题: 在嵌套标签中 外层使用了一个v-for循环去循环一个数组,当内层想要拿取index,并且使用 ...

  7. 微信小程tree组件,无限递归

    原理:没什么原理就是无限递归,组件引用组件本身,如果在有子级的情况下才引用. * 此处对递归原理不是很熟悉的需要注意一个坑,就是在对组件展开和关闭时候.只需要拿到当前坐标对数组对象直接赋值,并不需要去 ...

  8. 详解Material Design体系组件

    iOS 或 Material Design的设计指南,都是按照组件的属性来系统介绍. 一般把Control翻译成控件,把Component翻译成组件.通俗的解释说法就是组件为多个元素组合而成,控件为单 ...

  9. elementui tree组件层级过多时可左右滚动

    2019独角兽企业重金招聘Python工程师标准>>> 使用vue+elementui的tree组件,elementui官网elementui的tree组件 问题描述:tree层级过 ...

  10. antd Tree组件中,自定义右键菜单

    最近项目中,有一个需求是自定义antd的Tree组件的右键菜单功能. 直接上代码 class Demo extends Component {state = {rightClickNodeTreeIt ...

最新文章

  1. SQL SERVER 2008过了评估期
  2. Python3.5+selenium操作Chrome浏览器的简单实例
  3. 语言zzuli链表遍历_趣味图解算法之链表
  4. jMeter的Cookie Manager用法
  5. 201421123042 《Java程序设计》第8周学习总结
  6. 播撒汗水,收获希望!
  7. Java面试通关要点汇总集答案(七)——equals 与 == 的区别 List 和 Set 区别
  8. python模块是一个可共享的程序_python基础-模块
  9. paip.网站扫描安全工具hp WebInspect 使用指南
  10. LabVIEW学习笔记(1)
  11. STL之容器——介绍
  12. c语言中进入临界区函数,VC/MFC 临界区使用方法事例
  13. 尼尔·斯蒂芬森 (Neal Stephenson) 谈他的新地球工程气候变化惊悚片并创造了“元宇宙”一词...
  14. 推荐系统基础之矩阵分解
  15. 小程序中引导用户关注公众号
  16. 2022年“研究生科研素养提升”系列公益讲座在线测评【2】
  17. 24C01SC芯片介绍
  18. 2021字节跳动校招秋招算法面试真题解题报告--leetcode19 删除链表的倒数第 n 个结点,内含7种语言答案
  19. 网易2017春招笔试——赶去公司
  20. 二分答案(by jie)

热门文章

  1. 【Mac】nsurlsessiond 后台下载问题的解决方法
  2. 20、淘宝技术这十年
  3. mono webservice问题请教
  4. 最近啃的有点多了,乱了
  5. 89C52定时/计数器
  6. 空间中任一点到超平面的距离公式的推导过程
  7. CSS学习总结(2)——选择器
  8. 利用MapShaper将.shp文件转换成JSON文件
  9. File类的一些方法测试
  10. java邻接表无向图的创建_无向图的邻接表创建以及图的深度和…