关闭ant的tree_ant-design Tree组件问题
一个异步加载的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组件问题相关推荐
- ant design vue 组件 Tree
ant design vue 组件 Tree 实现效果: 实现代码: <div class="tree"><a-treeshow-iconshow-line:lo ...
- Ant Design Blazor 组件库的路由复用多标签页介绍
前言 Blazor 是 .NET 最新的前端框架,可以基于 WebAssembly 或 SignalR (WebSocket)构建前端应用程序,基于 WebAssembly 托管模型的 Blazor ...
- 【前端笔记】Ant Design Form组件 resetFields() 与 setFieldsValue() 之比较
Ant Design Form组件 resetFields() 与 setFieldsValue() 之比较 关键词:React,Ant Design,Form组件,组件渲染 一.问题描述 Form ...
- ant design Menu组件子菜单样式设置
ant design Menu组件子菜单样式设置 Menu二级子菜单宽度较宽,直接设置width不起作用,会被他自带的min-width覆盖 解决办法:设置组件的全局样式,提升优先级,如下所示: &l ...
- 【vue2中引入阿里第三方图标库使用自定义的Ant Design Vue组件a-cascader级联选择后缀图标】
1,首先在vue2项目中安装ant design vue组件 npm install ant-design-vue@1.7.2 2,a-cascader组件在页面中的使用 <template&g ...
- Ant Design Vue 组件@chang绑定方法如何传递自定义参数
Ant Design Vue 组件@chang绑定方法如何传递自定义参数 今天在写代码的时候遇到一个问题: 在嵌套标签中 外层使用了一个v-for循环去循环一个数组,当内层想要拿取index,并且使用 ...
- 微信小程tree组件,无限递归
原理:没什么原理就是无限递归,组件引用组件本身,如果在有子级的情况下才引用. * 此处对递归原理不是很熟悉的需要注意一个坑,就是在对组件展开和关闭时候.只需要拿到当前坐标对数组对象直接赋值,并不需要去 ...
- 详解Material Design体系组件
iOS 或 Material Design的设计指南,都是按照组件的属性来系统介绍. 一般把Control翻译成控件,把Component翻译成组件.通俗的解释说法就是组件为多个元素组合而成,控件为单 ...
- elementui tree组件层级过多时可左右滚动
2019独角兽企业重金招聘Python工程师标准>>> 使用vue+elementui的tree组件,elementui官网elementui的tree组件 问题描述:tree层级过 ...
- antd Tree组件中,自定义右键菜单
最近项目中,有一个需求是自定义antd的Tree组件的右键菜单功能. 直接上代码 class Demo extends Component {state = {rightClickNodeTreeIt ...
最新文章
- SQL SERVER 2008过了评估期
- Python3.5+selenium操作Chrome浏览器的简单实例
- 语言zzuli链表遍历_趣味图解算法之链表
- jMeter的Cookie Manager用法
- 201421123042 《Java程序设计》第8周学习总结
- 播撒汗水,收获希望!
- Java面试通关要点汇总集答案(七)——equals 与 == 的区别 List 和 Set 区别
- python模块是一个可共享的程序_python基础-模块
- paip.网站扫描安全工具hp WebInspect 使用指南
- LabVIEW学习笔记(1)
- STL之容器——介绍
- c语言中进入临界区函数,VC/MFC 临界区使用方法事例
- 尼尔·斯蒂芬森 (Neal Stephenson) 谈他的新地球工程气候变化惊悚片并创造了“元宇宙”一词...
- 推荐系统基础之矩阵分解
- 小程序中引导用户关注公众号
- 2022年“研究生科研素养提升”系列公益讲座在线测评【2】
- 24C01SC芯片介绍
- 2021字节跳动校招秋招算法面试真题解题报告--leetcode19 删除链表的倒数第 n 个结点,内含7种语言答案
- 网易2017春招笔试——赶去公司
- 二分答案(by jie)