diff --git a/packages/react-dom/src/__tests__/ReactDOMUseId-test.js b/packages/react-dom/src/__tests__/ReactDOMUseId-test.js index 953b96343db2..dd7bbaa8b41f 100644 --- a/packages/react-dom/src/__tests__/ReactDOMUseId-test.js +++ b/packages/react-dom/src/__tests__/ReactDOMUseId-test.js @@ -16,6 +16,7 @@ let ReactDOMFizzServer; let Stream; let Suspense; let useId; +let useState; let document; let writable; let container; @@ -35,6 +36,7 @@ describe('useId', () => { Stream = require('stream'); Suspense = React.Suspense; useId = React.useId; + useState = React.useState; // Test Environment const jsdom = new JSDOM( @@ -342,6 +344,32 @@ describe('useId', () => { `); }); + test('local render phase updates', async () => { + function App({swap}) { + const [count, setCount] = useState(0); + if (count < 3) { + setCount(count + 1); + } + return useId(); + } + + await serverAct(async () => { + const {pipe} = ReactDOMFizzServer.renderToPipeableStream(); + pipe(writable); + }); + await clientAct(async () => { + ReactDOM.hydrateRoot(container, ); + }); + expect(container).toMatchInlineSnapshot(` +
+ R:0 + +
+ `); + }); + test('basic incremental hydration', async () => { function App() { return ( diff --git a/packages/react-server/src/ReactFizzHooks.js b/packages/react-server/src/ReactFizzHooks.js index c88b6d79978d..926a1969bb48 100644 --- a/packages/react-server/src/ReactFizzHooks.js +++ b/packages/react-server/src/ReactFizzHooks.js @@ -199,7 +199,7 @@ export function finishHooks( // work-in-progress hooks and applying the additional updates on top. Keep // restarting until no more updates are scheduled. didScheduleRenderPhaseUpdate = false; - // TODO: Reset localIdCounter + localIdCounter = 0; numberOfReRenders += 1; // Start over from the beginning of the list