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