@samitouri / QOS-React / commits / ab0ef89ec7

Track parentID for ReactPerf

Dan Abramov committed Apr 21, 2016 at 17:55 UTC ab0ef89ec77962a39e3621ab4ce46cc073d3d7b2
2 files changed +38 -14
src/isomorphic/devtools/ReactComponentTreeDevtool.js
+24 -10
@@ -50,20 +50,34 @@ var ReactComponentTreeDevtool = {
50 updateTree(id, item => item.displayName = displayName);
51 },
52
53 - onSetChildren(id, childIDs) {
54 - childIDs.forEach(childID => {
55 - var childItem = tree[childID];
56 - expect(childItem).toBeDefined();
57 - expect(childItem.isComposite).toBeDefined();
58 - expect(childItem.displayName).toBeDefined();
59 - expect(childItem.childIDs || childItem.text).toBeDefined();
53 + onSetChildren(id, nextChildIDs) {
54 + var prevChildIDs;
55 + updateTree(id, item => {
56 + prevChildIDs = item.childIDs || [];
57 + item.childIDs = nextChildIDs;
58 });
59
62 - updateTree(id, item => item.childIDs = childIDs);
60 + prevChildIDs.forEach(prevChildID => {
61 + if (tree[prevChildID] && nextChildIDs.indexOf(prevChildID) === -1) {
62 + tree[prevChildID].parentID = null;
63 + }
64 + });
65 +
66 + nextChildIDs.forEach(nextChildID => {
67 + var item = tree[nextChildID];
68 + expect(item).toBeDefined();
69 + expect(item.isComposite).toBeDefined();
70 + expect(item.displayName).toBeDefined();
71 + expect(item.childIDs || item.text).toBeDefined();
72 +
73 + if (tree[nextChildID] && prevChildIDs.indexOf(nextChildID) === -1) {
74 + tree[nextChildID].parentID = id;
75 + }
76 + });
77 },
78
65 - onSetOwner(id, ownerDebugID) {
66 - updateTree(id, item => item.ownerDebugID = ownerDebugID);
79 + onSetOwner(id, ownerID) {
80 + updateTree(id, item => item.ownerID = ownerID);
81 },
82
83 onSetText(id, text) {
src/isomorphic/devtools/__tests__/ReactComponentTreeDevtool-test.js
+14 -4
@@ -36,22 +36,32 @@ describe('ReactComponentTreeDevtool', () => {
36 ReactDebugTool.removeDevtool(ReactComponentTreeDevtool);
37 });
38
39 - function denormalizeTree(tree, rootID, includeOwner) {
39 + function denormalizeTree(
40 + tree,
41 + rootID,
42 + includeOwner = false,
43 + expectedParentID = null
44 + ) {
45 var item = tree[rootID];
46 var result = {
47 isComposite: item.isComposite,
48 displayName: item.displayName,
49 };
50 +
51 + if (expectedParentID) {
52 + expect(item.parentID).toBe(expectedParentID);
53 + }
54 +
55 if (item.childIDs) {
56 result.children = item.childIDs.map(childID =>
47 - denormalizeTree(tree, childID, includeOwner)
57 + denormalizeTree(tree, childID, includeOwner, rootID)
58 );
59 }
60 if (item.text != null) {
61 result.text = item.text;
62 }
53 - if (includeOwner && item.ownerDebugID) {
54 - result.ownerDisplayName = tree[item.ownerDebugID].displayName;
63 + if (includeOwner && item.ownerID) {
64 + result.ownerDisplayName = tree[item.ownerID].displayName;
65 }
66 return result;
67 }