原因其实很简单。

 

              <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> : <></>
            }

以上。

相关文章:

  • 2021-08-17
  • 2022-12-23
  • 2021-05-29
  • 2021-04-22
  • 2021-04-25
  • 2022-12-23
  • 2021-06-30
  • 2021-12-30
猜你喜欢
  • 2021-07-07
  • 2021-07-05
  • 2021-07-09
  • 2022-12-23
  • 2022-12-23
  • 2021-11-13
相关资源
相似解决方案