V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
elone
V2EX  ›  React

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

  •  
  •   elone · 2017-02-27 01:12:11 +08:00 · 3045 次点击
    这是一个创建于 2826 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    6 条回复    2017-02-27 21:06:07 +08:00
    AdamChrist
        1
    AdamChrist  
       2017-02-27 09:00:11 +08:00
    直接更新 tree 绑定的数据..重新渲染不是可以了么?
    还要设置一下 expandedKeys checkedKeys 等等..
    AdamChrist
        2
    AdamChrist  
       2017-02-27 09:03:48 +08:00
    我说的前提是弹框增加方式.而不是图中的这种增加方式..
    elone
        3
    elone  
    OP
       2017-02-27 12:20:03 +08:00
    @AdamChrist #2 我现在可以实现在指定的节点之下创建一个新 input 节点,但是默认看不到,只有在缩起树节点再重新展开的时候 ,新的节点才会渲染出来。有办法解决这个问题吗?
    AdamChrist
        4
    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
        5
    elone  
    OP
       2017-02-27 15:10:09 +08:00 via Android
    @AdamChrist 好的,谢谢你
    elone
        6
    elone  
    OP
       2017-02-27 21:06:07 +08:00
    @AdamChrist #4 搜索了一番之后,发现在 State 改变之后调用 this.forceUpdate(); 就可以实现数据的更新。然而我在 stackoverflow 看到所有人都一致表示 应该尽量避免使用 forceUpdate ,但我还不知道使用它会有什么后果,以及有什么替代的方法。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2627 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 04:37 · PVG 12:37 · LAX 20:37 · JFK 23:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.