diff --git a/packages/react-debug-tools/src/ReactDebugHooks.js b/packages/react-debug-tools/src/ReactDebugHooks.js index 44930e549978d..5da57d87b3fff 100644 --- a/packages/react-debug-tools/src/ReactDebugHooks.js +++ b/packages/react-debug-tools/src/ReactDebugHooks.js @@ -232,7 +232,7 @@ const Dispatcher: DispatcherType = { // Inspect type HooksNode = { - nativeHookIndex: number, + index: number, name: string, value: mixed, subHooks: Array, @@ -374,7 +374,7 @@ function buildTree(rootStack, readHookLog): HooksTree { let rootChildren = []; let prevStack = null; let levelChildren = rootChildren; - let nativeHookIndex = 0; + let index = 0; let stackOfChildren = []; for (let i = 0; i < readHookLog.length; i++) { let hook = readHookLog[i]; @@ -405,7 +405,7 @@ function buildTree(rootStack, readHookLog): HooksTree { for (let j = stack.length - commonSteps - 1; j >= 1; j--) { let children = []; levelChildren.push({ - nativeHookIndex: -1, + index: -1, name: parseCustomHookName(stack[j - 1].functionName), value: undefined, subHooks: children, @@ -416,7 +416,7 @@ function buildTree(rootStack, readHookLog): HooksTree { prevStack = stack; } levelChildren.push({ - nativeHookIndex: hook.primitive === 'DebugValue' ? -1 : nativeHookIndex++, + index: hook.primitive === 'DebugValue' ? -1 : index++, name: hook.primitive, value: hook.value, subHooks: [], diff --git a/packages/react-debug-tools/src/__tests__/ReactHooksInspection-test.js b/packages/react-debug-tools/src/__tests__/ReactHooksInspection-test.js index d37a42dc90ff7..870bd19f3f6cd 100644 --- a/packages/react-debug-tools/src/__tests__/ReactHooksInspection-test.js +++ b/packages/react-debug-tools/src/__tests__/ReactHooksInspection-test.js @@ -28,7 +28,7 @@ describe('ReactHooksInspection', () => { let tree = ReactDebugTools.inspectHooks(Foo, {}); expect(tree).toEqual([ { - nativeHookIndex: 0, + index: 0, name: 'State', value: 'hello world', subHooks: [], @@ -49,12 +49,12 @@ describe('ReactHooksInspection', () => { let tree = ReactDebugTools.inspectHooks(Foo, {}); expect(tree).toEqual([ { - nativeHookIndex: -1, + index: -1, name: 'Custom', value: __DEV__ ? 'custom hook label' : undefined, subHooks: [ { - nativeHookIndex: 0, + index: 0, name: 'State', value: 'hello world', subHooks: [], @@ -83,18 +83,18 @@ describe('ReactHooksInspection', () => { let tree = ReactDebugTools.inspectHooks(Foo, {}); expect(tree).toEqual([ { - nativeHookIndex: -1, + index: -1, name: 'Custom', value: undefined, subHooks: [ { - nativeHookIndex: 0, + index: 0, name: 'State', subHooks: [], value: 'hello', }, { - nativeHookIndex: 1, + index: 1, name: 'Effect', subHooks: [], value: effect, @@ -102,18 +102,18 @@ describe('ReactHooksInspection', () => { ], }, { - nativeHookIndex: -1, + index: -1, name: 'Custom', value: undefined, subHooks: [ { - nativeHookIndex: 2, + index: 2, name: 'State', value: 'world', subHooks: [], }, { - nativeHookIndex: 3, + index: 3, name: 'Effect', value: effect, subHooks: [], @@ -152,23 +152,23 @@ describe('ReactHooksInspection', () => { let tree = ReactDebugTools.inspectHooks(Foo, {}); expect(tree).toEqual([ { - nativeHookIndex: -1, + index: -1, name: 'Bar', value: undefined, subHooks: [ { - nativeHookIndex: -1, + index: -1, name: 'Custom', value: undefined, subHooks: [ { - nativeHookIndex: 0, + index: 0, name: 'Reducer', value: 'hello', subHooks: [], }, { - nativeHookIndex: 1, + index: 1, name: 'Effect', value: effect, subHooks: [], @@ -176,7 +176,7 @@ describe('ReactHooksInspection', () => { ], }, { - nativeHookIndex: 2, + index: 2, name: 'LayoutEffect', value: effect, subHooks: [], @@ -184,28 +184,28 @@ describe('ReactHooksInspection', () => { ], }, { - nativeHookIndex: -1, + index: -1, name: 'Baz', value: undefined, subHooks: [ { - nativeHookIndex: 3, + index: 3, name: 'LayoutEffect', value: effect, subHooks: [], }, { - nativeHookIndex: -1, + index: -1, name: 'Custom', subHooks: [ { - nativeHookIndex: 4, + index: 4, name: 'Reducer', subHooks: [], value: 'world', }, { - nativeHookIndex: 5, + index: 5, name: 'Effect', subHooks: [], value: effect, @@ -227,7 +227,7 @@ describe('ReactHooksInspection', () => { let tree = ReactDebugTools.inspectHooks(Foo, {}); expect(tree).toEqual([ { - nativeHookIndex: 0, + index: 0, name: 'Context', value: 'default', subHooks: [], @@ -290,12 +290,10 @@ describe('ReactHooksInspection', () => { let tree = ReactDebugTools.inspectHooks(Foo, {}); expect(tree).toEqual([ { - nativeHookIndex: -1, + index: -1, name: 'Custom', value: __DEV__ ? 'bar:123' : undefined, - subHooks: [ - {nativeHookIndex: 0, name: 'State', subHooks: [], value: 0}, - ], + subHooks: [{index: 0, name: 'State', subHooks: [], value: 0}], }, ]); }); diff --git a/packages/react-debug-tools/src/__tests__/ReactHooksInspectionIntegration-test.js b/packages/react-debug-tools/src/__tests__/ReactHooksInspectionIntegration-test.js index ea30ba0828223..55518dc7d393a 100644 --- a/packages/react-debug-tools/src/__tests__/ReactHooksInspectionIntegration-test.js +++ b/packages/react-debug-tools/src/__tests__/ReactHooksInspectionIntegration-test.js @@ -40,8 +40,8 @@ describe('ReactHooksInspectionIntegration', () => { let childFiber = renderer.root.findByType(Foo)._currentFiber(); let tree = ReactDebugTools.inspectHooksOfFiber(childFiber); expect(tree).toEqual([ - {nativeHookIndex: 0, name: 'State', value: 'hello', subHooks: []}, - {nativeHookIndex: 1, name: 'State', value: 'world', subHooks: []}, + {index: 0, name: 'State', value: 'hello', subHooks: []}, + {index: 1, name: 'State', value: 'world', subHooks: []}, ]); let { @@ -55,8 +55,8 @@ describe('ReactHooksInspectionIntegration', () => { tree = ReactDebugTools.inspectHooksOfFiber(childFiber); expect(tree).toEqual([ - {nativeHookIndex: 0, name: 'State', value: 'Hi', subHooks: []}, - {nativeHookIndex: 1, name: 'State', value: 'world', subHooks: []}, + {index: 0, name: 'State', value: 'Hi', subHooks: []}, + {index: 1, name: 'State', value: 'world', subHooks: []}, ]); act(() => setStateB('world!')); @@ -65,8 +65,8 @@ describe('ReactHooksInspectionIntegration', () => { tree = ReactDebugTools.inspectHooksOfFiber(childFiber); expect(tree).toEqual([ - {nativeHookIndex: 0, name: 'State', value: 'Hi', subHooks: []}, - {nativeHookIndex: 1, name: 'State', value: 'world!', subHooks: []}, + {index: 0, name: 'State', value: 'Hi', subHooks: []}, + {index: 1, name: 'State', value: 'world!', subHooks: []}, ]); }); @@ -116,19 +116,19 @@ describe('ReactHooksInspectionIntegration', () => { let tree = ReactDebugTools.inspectHooksOfFiber(childFiber); expect(tree).toEqual([ - {nativeHookIndex: 0, name: 'State', value: 'a', subHooks: []}, - {nativeHookIndex: 1, name: 'Reducer', value: 'b', subHooks: []}, - {nativeHookIndex: 2, name: 'Ref', value: 'c', subHooks: []}, - {nativeHookIndex: 3, name: 'LayoutEffect', value: effect, subHooks: []}, - {nativeHookIndex: 4, name: 'Effect', value: effect, subHooks: []}, + {index: 0, name: 'State', value: 'a', subHooks: []}, + {index: 1, name: 'Reducer', value: 'b', subHooks: []}, + {index: 2, name: 'Ref', value: 'c', subHooks: []}, + {index: 3, name: 'LayoutEffect', value: effect, subHooks: []}, + {index: 4, name: 'Effect', value: effect, subHooks: []}, { - nativeHookIndex: 5, + index: 5, name: 'ImperativeHandle', value: outsideRef.current, subHooks: [], }, - {nativeHookIndex: 6, name: 'Memo', value: 'ab', subHooks: []}, - {nativeHookIndex: 7, name: 'Callback', value: updateStates, subHooks: []}, + {index: 6, name: 'Memo', value: 'ab', subHooks: []}, + {index: 7, name: 'Callback', value: updateStates, subHooks: []}, ]); updateStates(); @@ -137,19 +137,19 @@ describe('ReactHooksInspectionIntegration', () => { tree = ReactDebugTools.inspectHooksOfFiber(childFiber); expect(tree).toEqual([ - {nativeHookIndex: 0, name: 'State', value: 'A', subHooks: []}, - {nativeHookIndex: 1, name: 'Reducer', value: 'B', subHooks: []}, - {nativeHookIndex: 2, name: 'Ref', value: 'C', subHooks: []}, - {nativeHookIndex: 3, name: 'LayoutEffect', value: effect, subHooks: []}, - {nativeHookIndex: 4, name: 'Effect', value: effect, subHooks: []}, + {index: 0, name: 'State', value: 'A', subHooks: []}, + {index: 1, name: 'Reducer', value: 'B', subHooks: []}, + {index: 2, name: 'Ref', value: 'C', subHooks: []}, + {index: 3, name: 'LayoutEffect', value: effect, subHooks: []}, + {index: 4, name: 'Effect', value: effect, subHooks: []}, { - nativeHookIndex: 5, + index: 5, name: 'ImperativeHandle', value: outsideRef.current, subHooks: [], }, - {nativeHookIndex: 6, name: 'Memo', value: 'Ab', subHooks: []}, - {nativeHookIndex: 7, name: 'Callback', value: updateStates, subHooks: []}, + {index: 6, name: 'Memo', value: 'Ab', subHooks: []}, + {index: 7, name: 'Callback', value: updateStates, subHooks: []}, ]); }); @@ -168,7 +168,7 @@ describe('ReactHooksInspectionIntegration', () => { let tree = ReactDebugTools.inspectHooksOfFiber(childFiber); expect(tree).toEqual([ { - nativeHookIndex: 0, + index: 0, name: 'Context', value: 'contextual', subHooks: [], @@ -188,7 +188,7 @@ describe('ReactHooksInspectionIntegration', () => { let childFiber = renderer.root.findByType(Foo)._currentFiber(); let tree = ReactDebugTools.inspectHooksOfFiber(childFiber); expect(tree).toEqual([ - {nativeHookIndex: 0, name: 'ImperativeHandle', value: obj, subHooks: []}, + {index: 0, name: 'ImperativeHandle', value: obj, subHooks: []}, ]); }); @@ -203,7 +203,7 @@ describe('ReactHooksInspectionIntegration', () => { let childFiber = renderer.root.findByType(InnerFoo)._currentFiber(); let tree = ReactDebugTools.inspectHooksOfFiber(childFiber); expect(tree).toEqual([ - {nativeHookIndex: 0, name: 'State', value: 'hello', subHooks: []}, + {index: 0, name: 'State', value: 'hello', subHooks: []}, ]); }); @@ -221,12 +221,10 @@ describe('ReactHooksInspectionIntegration', () => { let tree = ReactDebugTools.inspectHooksOfFiber(childFiber); expect(tree).toEqual([ { - nativeHookIndex: -1, + index: -1, name: 'Custom', value: undefined, - subHooks: [ - {nativeHookIndex: 0, name: 'State', value: 'hello', subHooks: []}, - ], + subHooks: [{index: 0, name: 'State', value: 'hello', subHooks: []}], }, ]); }); @@ -254,34 +252,28 @@ describe('ReactHooksInspectionIntegration', () => { let tree = ReactDebugTools.inspectHooksOfFiber(childFiber); expect(tree).toEqual([ { - nativeHookIndex: -1, + index: -1, name: 'LabeledValue', value: __DEV__ ? 'custom label a' : undefined, - subHooks: [ - {nativeHookIndex: 0, name: 'State', value: 'a', subHooks: []}, - ], + subHooks: [{index: 0, name: 'State', value: 'a', subHooks: []}], }, { - nativeHookIndex: 1, + index: 1, name: 'State', value: 'b', subHooks: [], }, { - nativeHookIndex: -1, + index: -1, name: 'Anonymous', value: undefined, - subHooks: [ - {nativeHookIndex: 2, name: 'State', value: 'c', subHooks: []}, - ], + subHooks: [{index: 2, name: 'State', value: 'c', subHooks: []}], }, { - nativeHookIndex: -1, + index: -1, name: 'LabeledValue', value: __DEV__ ? 'custom label d' : undefined, - subHooks: [ - {nativeHookIndex: 3, name: 'State', value: 'd', subHooks: []}, - ], + subHooks: [{index: 3, name: 'State', value: 'd', subHooks: []}], }, ]); }); @@ -304,17 +296,15 @@ describe('ReactHooksInspectionIntegration', () => { let tree = ReactDebugTools.inspectHooksOfFiber(childFiber); expect(tree).toEqual([ { - nativeHookIndex: -1, + index: -1, name: 'Outer', value: __DEV__ ? 'outer' : undefined, subHooks: [ { - nativeHookIndex: -1, + index: -1, name: 'Inner', value: __DEV__ ? 'inner' : undefined, - subHooks: [ - {nativeHookIndex: 0, name: 'State', value: 0, subHooks: []}, - ], + subHooks: [{index: 0, name: 'State', value: 0, subHooks: []}], }, ], }, @@ -343,28 +333,22 @@ describe('ReactHooksInspectionIntegration', () => { let tree = ReactDebugTools.inspectHooksOfFiber(childFiber); expect(tree).toEqual([ { - nativeHookIndex: -1, + index: -1, name: 'SingleLabelCustom', value: __DEV__ ? 'single one' : undefined, - subHooks: [ - {nativeHookIndex: 0, name: 'State', value: 0, subHooks: []}, - ], + subHooks: [{index: 0, name: 'State', value: 0, subHooks: []}], }, { - nativeHookIndex: -1, + index: -1, name: 'MultiLabelCustom', value: __DEV__ ? ['one', 'two', 'three'] : undefined, - subHooks: [ - {nativeHookIndex: 1, name: 'State', value: 0, subHooks: []}, - ], + subHooks: [{index: 1, name: 'State', value: 0, subHooks: []}], }, { - nativeHookIndex: -1, + index: -1, name: 'SingleLabelCustom', value: __DEV__ ? 'single two' : undefined, - subHooks: [ - {nativeHookIndex: 2, name: 'State', value: 0, subHooks: []}, - ], + subHooks: [{index: 2, name: 'State', value: 0, subHooks: []}], }, ]); }); @@ -394,12 +378,10 @@ describe('ReactHooksInspectionIntegration', () => { let tree = ReactDebugTools.inspectHooksOfFiber(childFiber); expect(tree).toEqual([ { - nativeHookIndex: -1, + index: -1, name: 'Custom', value: __DEV__ ? 'bar:123' : undefined, - subHooks: [ - {nativeHookIndex: 0, name: 'State', subHooks: [], value: 0}, - ], + subHooks: [{index: 0, name: 'State', subHooks: [], value: 0}], }, ]); }); @@ -433,7 +415,7 @@ describe('ReactHooksInspectionIntegration', () => { let childFiber = renderer.root._currentFiber(); let tree = ReactDebugTools.inspectHooksOfFiber(childFiber); expect(tree).toEqual([ - {nativeHookIndex: 0, name: 'State', value: 'def', subHooks: []}, + {index: 0, name: 'State', value: 'def', subHooks: []}, ]); }); diff --git a/packages/react-reconciler/src/ReactFiberReconciler.js b/packages/react-reconciler/src/ReactFiberReconciler.js index 6ae7a264363e5..5b45cc5894bf8 100644 --- a/packages/react-reconciler/src/ReactFiberReconciler.js +++ b/packages/react-reconciler/src/ReactFiberReconciler.js @@ -372,14 +372,14 @@ if (__DEV__) { // Support DevTools editable hooks state. overrideHook = ( fiber: Fiber, - nativeHookIndex: number, + index: number, path: Array, value: any, ) => { let currentHook = fiber.memoizedState; - while (currentHook !== null && nativeHookIndex > 0) { + while (currentHook !== null && index > 0) { currentHook = currentHook.next; - nativeHookIndex--; + index--; } if (currentHook !== null) { let updatedState = copyWithSet(currentHook.memoizedState, path, value);