mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
[tests] <StrictMode /> nested in tree is broken (#31825)
Adds a test that shows using <StrictMode /> anywhere outside of the root
node will not fire strict effects.
This works:
```js
root.render(
<StrictMode>
<App>
<Children />
</App>
</StrictMode>
);
```
This does not fire strict effects on mount:
```js
root.render(
<App>
<StrictMode>
<Children />
</StrictMode>
</App>
);
```
This commit is contained in:
@@ -179,6 +179,40 @@ describe('ReactStrictMode', () => {
|
||||
'B: useEffect mount',
|
||||
]);
|
||||
});
|
||||
|
||||
it('should support nested strict mode on initial mount', async () => {
|
||||
function Wrapper({children}) {
|
||||
return children;
|
||||
}
|
||||
await act(() => {
|
||||
const container = document.createElement('div');
|
||||
const root = ReactDOMClient.createRoot(container);
|
||||
root.render(
|
||||
<Wrapper>
|
||||
<Component label="A" />
|
||||
<React.StrictMode>
|
||||
<Component label="B" />,
|
||||
</React.StrictMode>
|
||||
,
|
||||
</Wrapper>,
|
||||
);
|
||||
});
|
||||
|
||||
expect(log).toEqual([
|
||||
'A: render',
|
||||
'B: render',
|
||||
'B: render',
|
||||
'A: useLayoutEffect mount',
|
||||
'B: useLayoutEffect mount',
|
||||
'A: useEffect mount',
|
||||
'B: useEffect mount',
|
||||
// TODO: this is currently broken
|
||||
// 'B: useLayoutEffect unmount',
|
||||
// 'B: useEffect unmount',
|
||||
// 'B: useLayoutEffect mount',
|
||||
// 'B: useEffect mount',
|
||||
]);
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user