Skip to content

Commit

Permalink
Hydration specific
Browse files Browse the repository at this point in the history
  • Loading branch information
eps1lon committed Apr 29, 2024
1 parent 551504a commit 845ebfa
Showing 1 changed file with 13 additions and 21 deletions.
34 changes: 13 additions & 21 deletions packages/react-dom/src/__tests__/ReactDOMStrictEffects-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

let React;
let ReactDOMClient;
let ReactDOMServer;
let Scheduler;
let act;
let assertLog;
Expand All @@ -25,43 +26,34 @@ describe('StrictEffectsMode', () => {
React = require('react');
Scheduler = require('scheduler');
ReactDOMClient = require('react-dom/client');
ReactDOMServer = require('react-dom/server');
});

it('should double invoke effects', async () => {
it('should double invoke effects during hydration', async () => {
function App({text}) {
React.useEffect(() => {
Scheduler.log('useEffect mount');
return () => Scheduler.log('useEffect unmount');
});

React.useLayoutEffect(() => {
Scheduler.log('useLayoutEffect mount');
return () => Scheduler.log('useLayoutEffect unmount');
});

return text;
}
const container = document.createElement('div');
const element = (
<React.StrictMode>
<App text={'mount'} />
</React.StrictMode>
);
container.innerHTML = ReactDOMServer.renderToString(element);

const root = ReactDOMClient.createRoot(document.createElement('div'));
await act(() => {
root.render(
<React.StrictMode>
<App text={'mount'} />
</React.StrictMode>,
);
ReactDOMClient.hydrateRoot(container, element);
});

if (__DEV__) {
assertLog([
'useLayoutEffect mount',
'useEffect mount',
'useLayoutEffect unmount',
'useEffect unmount',
'useLayoutEffect mount',
'useEffect mount',
]);
assertLog(['useEffect mount', 'useEffect unmount', 'useEffect mount']);
} else {
assertLog(['useLayoutEffect mount', 'useEffect mount']);
assertLog(['useEffect mount']);
}
});
});

0 comments on commit 845ebfa

Please sign in to comment.