Skip to content

Commit cd267f4

Browse files
committed
simplify test
1 parent 5804ed3 commit cd267f4

File tree

1 file changed

+35
-25
lines changed

1 file changed

+35
-25
lines changed

packages/react-reconciler/src/__tests__/useEffectEvent-test.js

Lines changed: 35 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1272,54 +1272,64 @@ describe('useEffectEvent', () => {
12721272
});
12731273

12741274
// @gate enableActivity
1275-
it('effect events are fresh in deeply nested hidden Activities', async () => {
1275+
it('effect events are fresh inside Activity', async () => {
12761276
function Child({value}) {
1277-
const logValue = useEffectEvent(() => {
1278-
Scheduler.log('effect event: ' + value);
1277+
const getValue = useEffectEvent(effectName => {
1278+
return value;
12791279
});
12801280
useInsertionEffect(() => {
1281-
logValue();
1281+
Scheduler.log('insertion create: ' + getValue());
12821282
return () => {
1283-
logValue();
1283+
Scheduler.log('insertion destroy: ' + getValue());
12841284
};
12851285
});
1286+
useLayoutEffect(() => {
1287+
Scheduler.log('layout create: ' + getValue());
1288+
return () => {
1289+
Scheduler.log('layout destroy: ' + getValue());
1290+
};
1291+
});
1292+
12861293
Scheduler.log('render: ' + value);
12871294
return null;
12881295
}
12891296

1290-
function App({value}) {
1297+
function App({value, mode}) {
12911298
return (
1292-
<React.Activity mode="hidden">
1293-
<React.Activity mode="hidden">
1294-
<React.Activity mode="hidden">
1295-
<Child value={value} />
1296-
</React.Activity>
1297-
</React.Activity>
1299+
<React.Activity mode={mode}>
1300+
<Child value={value} />
12981301
</React.Activity>
12991302
);
13001303
}
13011304

13021305
const root = ReactNoop.createRoot();
13031306

1304-
// Initial mount with value=1
1305-
await act(() => root.render(<App value={1} />));
1307+
// Mount hidden
1308+
await act(async () => root.render(<App value={1} mode="hidden" />));
1309+
assertLog(['render: 1', 'insertion create: 1']);
1310+
1311+
// Update, still hidden
1312+
await act(async () => root.render(<App value={2} mode="hidden" />));
1313+
1314+
// Bug in enableViewTransition. Insertion and layout see stale closure.
13061315
assertLog([
1307-
'render: 1',
1308-
'effect event: 1', // Insertion effect mount should see fresh value
1316+
'render: 2',
1317+
...(gate('enableViewTransition') &&
1318+
!gate('enableEffectEventMutationPhase')
1319+
? ['insertion destroy: 1', 'insertion create: 1']
1320+
: ['insertion destroy: 2', 'insertion create: 2']),
13091321
]);
13101322

1311-
// Update to value=2
1312-
await act(() => root.render(<App value={2} />));
1323+
// Switch to visible
1324+
await act(async () => root.render(<App value={2} mode="visible" />));
13131325

1314-
// Bug in enableViewTransition.
1326+
// Bug in enableViewTransition. Even when switching to visible, sees stale closure.
13151327
assertLog([
13161328
'render: 2',
1317-
gate('enableViewTransition') && !gate('enableEffectEventMutationPhase')
1318-
? 'effect event: 1'
1319-
: 'effect event: 2',
1320-
gate('enableViewTransition') && !gate('enableEffectEventMutationPhase')
1321-
? 'effect event: 1'
1322-
: 'effect event: 2',
1329+
...(gate('enableViewTransition') &&
1330+
!gate('enableEffectEventMutationPhase')
1331+
? ['insertion destroy: 1', 'insertion create: 1', 'layout create: 1']
1332+
: ['insertion destroy: 2', 'insertion create: 2', 'layout create: 2']),
13231333
]);
13241334
});
13251335
});

0 commit comments

Comments
 (0)