fix(mera/v2): debounce-таймер адреса не чистился при размонтировании панели
All checks were successful
CI Trade-In / changes (pull_request) Successful in 7s
CI / changes (pull_request) Successful in 10s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Successful in 59s
All checks were successful
CI Trade-In / changes (pull_request) Successful in 7s
CI / changes (pull_request) Successful in 10s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Successful in 59s
Таймер из onAddressChange (200 мс) переживал unmount и дёргал setState уже мёртвого компонента. В CI это валило frontend-checks у PR #3226 как unhandled `ReferenceError: window is not defined` — новый тест ParamsPanel.floors печатает адрес и завершается раньше, чем таймер срабатывает, и тот стрелял после teardown jsdom. Ассерты при этом были зелёные, падал сам прогон.
This commit is contained in:
parent
ac5f16abfd
commit
57531c9f21
1 changed files with 11 additions and 0 deletions
|
|
@ -758,6 +758,17 @@ export default function ParamsPanel({
|
||||||
initialValues?.target_fias_id ?? null,
|
initialValues?.target_fias_id ?? null,
|
||||||
);
|
);
|
||||||
const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);
|
const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);
|
||||||
|
|
||||||
|
// Debounce-таймер адреса переживал размонтирование панели: набранный текст
|
||||||
|
// ставит таймер на 200 мс, и если панель закрыть раньше, он дёргает setState
|
||||||
|
// уже мёртвого компонента. В тестах это падает как unhandled
|
||||||
|
// `ReferenceError: window is not defined` после teardown окружения (#3226).
|
||||||
|
useEffect(
|
||||||
|
() => () => {
|
||||||
|
if (debounceRef.current) clearTimeout(debounceRef.current);
|
||||||
|
},
|
||||||
|
[],
|
||||||
|
);
|
||||||
// БАЛКОН radiogroup focus targets (roving tabindex).
|
// БАЛКОН radiogroup focus targets (roving tabindex).
|
||||||
const balNoRef = useRef<HTMLButtonElement>(null);
|
const balNoRef = useRef<HTMLButtonElement>(null);
|
||||||
const balYesRef = useRef<HTMLButtonElement>(null);
|
const balYesRef = useRef<HTMLButtonElement>(null);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue