/
githubmr
/
facebook-react
Обзор
Документация
Войти
/
githubmr
/
facebook-react
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
main
packages/react-dom/src/__tests__/ReactEventIndependence-test.js
90 строк
2 KB
Andrew Clark
Revert "[Tests] Reset modules by default" (#28318)
13 фев 2024, 19:39
Не верифицирован
13 фев 2024, 19:39
015ff2e
Код
Авторство
О чём код?
/** * 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'; let React; let ReactDOMClient; let act; describe('ReactEventIndependence', () => { beforeEach(() => { jest.resetModules(); React = require('react'); ReactDOMClient = require('react-dom/client'); act = require('internal-test-utils').act; }); it('does not crash with other react inside', async () => { let clicks = 0; const container = document.createElement('div'); document.body.appendChild(container); const root = ReactDOMClient.createRoot(container); try { await act(() => { root.render( <div onClick={() => clicks++} dangerouslySetInnerHTML={{ __html: '<button data-reactid=".z">click me</div>', }} />, ); }); container.firstElementChild.click(); expect(clicks).toBe(1); } finally { document.body.removeChild(container); } }); it('does not crash with other react outside', async () => { let clicks = 0; const outer = document.createElement('div'); document.body.appendChild(outer); const root = ReactDOMClient.createRoot(outer); try { outer.setAttribute('data-reactid', '.z'); await act(() => { root.render(<button onClick={() => clicks++}>click me</button>); }); outer.firstElementChild.click(); expect(clicks).toBe(1); } finally { document.body.removeChild(outer); } }); it('does not when event fired on unmounted tree', async () => { let clicks = 0; const container = document.createElement('div'); document.body.appendChild(container); try { const root = ReactDOMClient.createRoot(container); await act(() => { root.render(<button onClick={() => clicks++}>click me</button>); }); const button = container.firstChild; // Now we unmount the component, as if caused by a non-React event handler // for the same click we're about to simulate, like closing a layer: root.unmount(); button.click(); // Since the tree is unmounted, we don't dispatch the click event. expect(clicks).toBe(0); } finally { document.body.removeChild(container); } }); });