All files / src/tree/_example TreeDynamicExample.jsx

11.54% Statements 3/26
0% Branches 0/10
14.29% Functions 1/7
11.54% Lines 3/26

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78                                        1x   1x                                                                                 1x                            
// @ts-nocheck
import React, { useState } from "react";
import { Tree, TreeNode } from "@tencent/tea-component/lib/tree";
 
function getNode(nodes, id) {
  for (const node of nodes) {
    if (node.id === id) {
      return node;
    }
    if (node.children) {
      const result = getNode(node.children, id);
      if (result) {
        return result;
      }
    }
  }
  return null;
}
 
export default function TreeDynamicExample() {
  const [selectIds, setSelectIds] = useState();
 
  const [data, setData] = useState([
    { content: "0-0", id: "0-0", expandable: true },
  ]);
 
  function onLoad(id) {
    return new Promise((resolve, reject) => {
      const node = getNode(data, id);
 
      if (node.children) {
        resolve();
        return;
      }
 
      setTimeout(() => {
        // 模拟失败
        if (Math.random() > 0.7) {
          reject(new Error("Load Error"));
          return;
        }
 
        Object.assign(node, {
          children: [
            {
              content: `${node.id}-0`,
              id: `${node.id}-0`,
              expandable: true,
            },
            {
              content: `${node.id}-1`,
              id: `${node.id}-1`,
              expandable: true,
            },
          ],
        });
 
        setData([...data]);
        resolve();
      }, 1000);
    });
  }
 
  return (
    <Tree
      selectable
      data={data}
      onLoad={onLoad}
      onLoadError={(id, err) => console.warn(id, err)}
      selectedIds={selectIds}
      onSelect={(value, context) => {
        console.log(value, context);
        setSelectIds(value);
      }}
    />
  );
}