Skip to content

Commit 3ee7a00

Browse files
authored
devtools: Display actual ReactDOM API name in root type (#22363)
1 parent 79b8fc6 commit 3ee7a00

File tree

5 files changed

+69
-4
lines changed

5 files changed

+69
-4
lines changed

packages/react-devtools-shared/src/__tests__/inspectedElement-test.js

+59
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ describe('InspectedElement', () => {
176176
"a": 1,
177177
"b": "abc",
178178
},
179+
"rootType": "render()",
179180
"state": null,
180181
}
181182
`);
@@ -1584,6 +1585,7 @@ describe('InspectedElement', () => {
15841585
"a": 1,
15851586
"b": "abc",
15861587
},
1588+
"rootType": "render()",
15871589
"state": null,
15881590
}
15891591
`);
@@ -1912,6 +1914,7 @@ describe('InspectedElement', () => {
19121914
"id": 2,
19131915
"owners": null,
19141916
"props": Object {},
1917+
"rootType": "render()",
19151918
"state": null,
19161919
}
19171920
`);
@@ -1944,11 +1947,67 @@ describe('InspectedElement', () => {
19441947
"id": 2,
19451948
"owners": null,
19461949
"props": Object {},
1950+
"rootType": "render()",
19471951
"state": null,
19481952
}
19491953
`);
19501954
});
19511955

1956+
it('should display the root type for ReactDOM.hydrate', async () => {
1957+
const Example = () => <div />;
1958+
1959+
await utils.actAsync(() => {
1960+
const container = document.createElement('div');
1961+
container.innerHTML = '<div></div>';
1962+
withErrorsOrWarningsIgnored(
1963+
['ReactDOM.hydrate is no longer supported in React 18'],
1964+
() => {
1965+
ReactDOM.hydrate(<Example />, container);
1966+
},
1967+
);
1968+
}, false);
1969+
1970+
const inspectedElement = await inspectElementAtIndex(0);
1971+
expect(inspectedElement.rootType).toMatchInlineSnapshot(`"hydrate()"`);
1972+
});
1973+
1974+
it('should display the root type for ReactDOM.render', async () => {
1975+
const Example = () => <div />;
1976+
1977+
await utils.actAsync(() => {
1978+
const container = document.createElement('div');
1979+
legacyRender(<Example />, container);
1980+
}, false);
1981+
1982+
const inspectedElement = await inspectElementAtIndex(0);
1983+
expect(inspectedElement.rootType).toMatchInlineSnapshot(`"render()"`);
1984+
});
1985+
1986+
it('should display the root type for ReactDOM.hydrateRoot', async () => {
1987+
const Example = () => <div />;
1988+
1989+
await utils.actAsync(() => {
1990+
const container = document.createElement('div');
1991+
container.innerHTML = '<div></div>';
1992+
ReactDOM.hydrateRoot(container).render(<Example />);
1993+
}, false);
1994+
1995+
const inspectedElement = await inspectElementAtIndex(0);
1996+
expect(inspectedElement.rootType).toMatchInlineSnapshot(`"hydrateRoot()"`);
1997+
});
1998+
1999+
it('should display the root type for ReactDOM.createRoot', async () => {
2000+
const Example = () => <div />;
2001+
2002+
await utils.actAsync(() => {
2003+
const container = document.createElement('div');
2004+
ReactDOM.createRoot(container).render(<Example />);
2005+
}, false);
2006+
2007+
const inspectedElement = await inspectElementAtIndex(0);
2008+
expect(inspectedElement.rootType).toMatchInlineSnapshot(`"createRoot()"`);
2009+
});
2010+
19522011
describe('$r', () => {
19532012
it('should support function components', async () => {
19542013
const Example = () => {

packages/react-devtools-shared/src/__tests__/inspectedElementSerializer.js

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ export function print(inspectedElement, serialize, indent) {
3030
id: inspectedElement.id,
3131
owners: inspectedElement.owners,
3232
props: inspectedElement.props,
33+
rootType: inspectedElement.rootType,
3334
state: inspectedElement.state,
3435
});
3536
}

packages/react-devtools-shared/src/__tests__/legacy/inspectElement-test.js

+5
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ describe('InspectedElementContext', () => {
8383
"a": 1,
8484
"b": "abc",
8585
},
86+
"rootType": null,
8687
"state": null,
8788
}
8889
`);
@@ -133,6 +134,7 @@ describe('InspectedElementContext', () => {
133134
"value_null": null,
134135
"value_undefined": undefined,
135136
},
137+
"rootType": null,
136138
"state": null,
137139
}
138140
`);
@@ -408,6 +410,7 @@ describe('InspectedElementContext', () => {
408410
"preview_long": Generator,
409411
},
410412
},
413+
"rootType": null,
411414
"state": null,
412415
}
413416
`);
@@ -461,6 +464,7 @@ describe('InspectedElementContext', () => {
461464
"number": 42,
462465
},
463466
},
467+
"rootType": null,
464468
"state": null,
465469
}
466470
`);
@@ -552,6 +556,7 @@ describe('InspectedElementContext', () => {
552556
"enumerableStringBase": 1,
553557
},
554558
},
559+
"rootType": null,
555560
"state": null,
556561
}
557562
`);

packages/react-reconciler/src/ReactFiberRoot.new.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,10 @@ function FiberRootNode(containerInfo, tag, hydrate) {
8383
if (__DEV__) {
8484
switch (tag) {
8585
case ConcurrentRoot:
86-
this._debugRootType = 'createRoot()';
86+
this._debugRootType = hydrate ? 'hydrateRoot()' : 'createRoot()';
8787
break;
8888
case LegacyRoot:
89-
this._debugRootType = 'createLegacyRoot()';
89+
this._debugRootType = hydrate ? 'hydrate()' : 'render()';
9090
break;
9191
}
9292
}

packages/react-reconciler/src/ReactFiberRoot.old.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,10 @@ function FiberRootNode(containerInfo, tag, hydrate) {
8383
if (__DEV__) {
8484
switch (tag) {
8585
case ConcurrentRoot:
86-
this._debugRootType = 'createRoot()';
86+
this._debugRootType = hydrate ? 'hydrateRoot()' : 'createRoot()';
8787
break;
8888
case LegacyRoot:
89-
this._debugRootType = 'createLegacyRoot()';
89+
this._debugRootType = hydrate ? 'hydrate()' : 'render()';
9090
break;
9191
}
9292
}

0 commit comments

Comments
 (0)