@samitouri / QOS-React / commits / 6b86764ac1

Use a recursive algorithm for dumpTree

The parent pointer is updated to one of the two versions during work so if you log in the middle of work, it gets confused.

Sebastian Markbage committed Jun 20, 2016 at 14:13 UTC 6b86764ac19a7882f4fcaa231adb9f27a275f57f
1 file changed +6 -17
src/renderers/noop/ReactNoop.js
+6 -17
@@ -91,27 +91,16 @@ var ReactNoop = {
91 console.log('Nothing rendered yet.');
92 return;
93 }
94 - let fiber : Fiber = (root.stateNode : any).current;
95 - let depth = 0;
96 - while (fiber) {
94 + function logFiber(fiber : Fiber, depth) {
95 console.log(' '.repeat(depth) + '- ' + (fiber.type ? fiber.type.name || fiber.type : '[root]'), '[' + fiber.pendingWorkPriority + (fiber.pendingProps ? '*' : '') + ']');
96 if (fiber.child) {
99 - fiber = fiber.child;
100 - depth++;
101 - continue;
102 - } else {
103 - while (!fiber.sibling) {
104 - if (!fiber.parent) {
105 - return;
106 - } else {
107 - // $FlowFixMe: This downcast is not safe. It is intentionally an error.
108 - fiber = fiber.parent;
109 - }
110 - depth--;
111 - }
112 - fiber = fiber.sibling;
97 + logFiber(fiber.child, depth + 1);
98 + }
99 + if (fiber.sibling) {
100 + logFiber(fiber.sibling, depth);
101 }
102 }
103 + logFiber((root.stateNode : any).current, 0);
104 },
105
106 };