蚂蚁金服的 Tree 树形控件如何才能在选择的节点中插入新节点?

2017-02-27 01:12:11 +08:00
 elone

官方文档中没有这个功能,我想实现这个功能 , google 了一圈也没看到有相关的实现,我就是想问问,有没有官方的这方面的实现。

我就是想实现图中这样的功能 ,点击新建按钮会有焦点所在的目录下创建新目录 。

简单总结我的意图:在指定的树节点插入新建节点

3046 次点击
所在节点    React
6 条回复
AdamChrist
2017-02-27 09:00:11 +08:00
直接更新 tree 绑定的数据..重新渲染不是可以了么?
还要设置一下 expandedKeys checkedKeys 等等..
AdamChrist
2017-02-27 09:03:48 +08:00
我说的前提是弹框增加方式.而不是图中的这种增加方式..
elone
2017-02-27 12:20:03 +08:00
@AdamChrist #2 我现在可以实现在指定的节点之下创建一个新 input 节点,但是默认看不到,只有在缩起树节点再重新展开的时候 ,新的节点才会渲染出来。有办法解决这个问题吗?
AdamChrist
2017-02-27 13:40:17 +08:00
这个没有做过类似的..应该是没有 render 的问题..你看下文档最下面的有句话:
"树节点可以有很多,但在设置 checkable 时,将会花费更多的计算时间,因此我们缓存了一些计算结果( this.treeNodesStates )来复用,避免多次重复计算,以此提高性能。但这也带来了一些限制,当你异步加载树节点时,你需要这样渲染树:
{this.state.treeData.length
? <Tree>{this.state.treeData.map(data => <TreeNode />)}</Tree>
: 'loading tree'} "
看看这不是这个原因造成的?如果还是有问题..那去 GitHub 上提 issue 吧
elone
2017-02-27 15:10:09 +08:00
@AdamChrist 好的,谢谢你
elone
2017-02-27 21:06:07 +08:00
@AdamChrist #4 搜索了一番之后,发现在 State 改变之后调用 this.forceUpdate(); 就可以实现数据的更新。然而我在 stackoverflow 看到所有人都一致表示 应该尽量避免使用 forceUpdate ,但我还不知道使用它会有什么后果,以及有什么替代的方法。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/343378

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX