ReactDOMNestedEvents-test.js — react Source File
Architecture documentation for ReactDOMNestedEvents-test.js, a javascript file in the react codebase.
Entity Profile
Source Code
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @emails react-core
*/
'use strict';
describe('ReactDOMNestedEvents', () => {
let React;
let ReactDOMClient;
let Scheduler;
let act;
let useState;
let assertLog;
beforeEach(() => {
jest.resetModules();
React = require('react');
ReactDOMClient = require('react-dom/client');
Scheduler = require('scheduler');
act = require('internal-test-utils').act;
useState = React.useState;
const InternalTestUtils = require('internal-test-utils');
assertLog = InternalTestUtils.assertLog;
});
it('nested event dispatches should not cause updates to flush', async () => {
const buttonRef = React.createRef(null);
function App() {
const [isClicked, setIsClicked] = useState(false);
const [isFocused, setIsFocused] = useState(false);
const onClick = () => {
setIsClicked(true);
const el = buttonRef.current;
el.focus();
// The update triggered by the focus event should not have flushed yet.
// Nor the click update. They would have if we had wrapped the focus
// call in `flushSync`, though.
Scheduler.log('Value right after focus call: ' + el.innerHTML);
};
const onFocus = () => {
setIsFocused(true);
};
return (
<>
<button ref={buttonRef} onFocus={onFocus} onClick={onClick}>
{`Clicked: ${isClicked}, Focused: ${isFocused}`}
</button>
</>
);
}
const container = document.createElement('div');
document.body.appendChild(container);
const root = ReactDOMClient.createRoot(container);
await act(() => {
root.render(<App />);
});
expect(buttonRef.current.innerHTML).toEqual(
'Clicked: false, Focused: false',
);
await act(() => {
buttonRef.current.click();
});
assertLog(['Value right after focus call: Clicked: false, Focused: false']);
expect(buttonRef.current.innerHTML).toEqual('Clicked: true, Focused: true');
});
});
Source
Frequently Asked Questions
What does ReactDOMNestedEvents-test.js do?
ReactDOMNestedEvents-test.js is a source file in the react codebase, written in javascript.
Where is ReactDOMNestedEvents-test.js in the architecture?
ReactDOMNestedEvents-test.js is located at packages/react-dom/src/__tests__/ReactDOMNestedEvents-test.js (directory: packages/react-dom/src/__tests__).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free