antd 踩坑:为什么 Tree defaultExpandAll defaultExpandedKeys 在刷新后会失效?


原因其实很简单。

 

              <Tree onSelect={handleTreeClick} defaultExpandedKeys={[rootOrgId]}>
                {this.renderTreeNodes(OrgTreeData.children)}
              </Tree>
renderTreeNodes = data => {
    if (!Array.isArray(data)) {
      return <></>;
    }
    return data.map(item => {
      if (item.children && item.children.length > 0) {
        return (
          <TreeNode title={item.title} key={item.key} dataRef={item}>
            {this.renderTreeNodes(item.children)}
          </TreeNode>
        );
      }
      return <TreeNode key={item.key} dataRef={item} {...item} />;
    });
  };

 

如果树节点数据时从接口获取的,那么,这样写就会有一个问题:

当 Tree 渲染的时候, TreeNode 还没有渲染!

也就是说,Tree 和 TreeNode 渲染不是同步的。

这样当然会造成各种问题。只是碰到了这个而已。

 

解决方法很简单,让他们一起渲染就行。

            {
              OrgTreeData && OrgTreeData.children ? 
              <Tree onSelect={handleTreeClick} defaultExpandedKeys={[rootOrgId]}>
                {this.renderTreeNodes(OrgTreeData.children)}
              </Tree> : <></>
            }

以上。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM