Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

[Bug][ModalPage]: Смена адреса страницы до завершения анимации закрытия #7522

Closed
Kritolan opened this issue Sep 5, 2024 · 4 comments

Comments

@Kritolan
Copy link

Kritolan commented Sep 5, 2024

Описание

У меня есть модальное окно, которое может открываться как по ссылке с параметром, так и просто через showModal. Внутри окна я смотрю наличие параметра в адресе и в зависимости от этого меняю содержимое этого окна. Т.е. когда параметр есть то отображается состояние 1, а когда нету - состояние 2.

Проблема в том, что адрес приложения меняется в начале анимации закрытия. Это приводит к тому, что окно, открытое по ссылке с параметром и отображающее состояние 1, на время анимации реагирует на смену адреса и начинает отображать состояние 2.

Версия

6.6.0

В каких браузерах воспроизводится проблема?

No response

Шаги воспроизведения

No response

Ожидаемое поведение

No response

Скриншоты

No response

Пример с воспроизведением

https://codesandbox.io/p/sandbox/loving-ives-qmgcns
Если открыть существующее событие - то появится красное окно, но при анимации закрытия оно станет зеленым.

No response

@BlackySoul
Copy link
Contributor

Привет! Можно какой-то минимальный пример с воспроизведением или больше подробностей. Какие используются методы?

Проблема в том, что адрес приложения меняется в начале анимации закрытия

Какое действие триггерит смену этого адреса? + смена адреса триггерит и закрытие модального окна?

@Kritolan
Copy link
Author

Kritolan commented Sep 6, 2024

https://codesandbox.io/p/sandbox/loving-ives-qmgcns

Если открыть существующее событие - то появится красное окно, но при анимации закрытия оно станет зеленым.

@BlackySoul
Copy link
Contributor

https://codesandbox.io/p/sandbox/loving-ives-qmgcns

Если открыть существующее событие - то появится красное окно, но при анимации закрытия оно станет зеленым.

Кажется, что такое поведение не что-то, что нужно править на стороне VKUI, потому что всё работает, как и задумано - вызывается onClose - где-то внутри роутера значение activeModal становится null, это сигнал к тому, чтобы модалка начала проигрывать анимацию закрытия. В этот момент меняется location и реакт успевает перерендерить контент с обновленным значением, пока анимация закрытия все ещё проигрывается.

Чтобы этого избежать - необходимо в обработчике onClose сделать так, чтобы activeModal становилось null, а в onClosed (который вызывается после того, как анимация закрытия прошла) уже бы менялся location, например. Такое решение только библиотека роутера сможет предложить.

Либо на своей стороне можно унести color в стейт, чтобы значение изменялось только в нужные моменты

@vkcom-publisher
Copy link
Contributor

Задача закрыта из-за отсутствия активности в течение последних 14 дней. Если это произошло по ошибке или проблема все ещё актуальна, откройте задачу повторно.

@vkcom-publisher vkcom-publisher closed this as not planned Won't fix, can't repro, duplicate, stale Sep 24, 2024
# for free to join this conversation on GitHub. Already have an account? # to comment
Projects
Archived in project
Development

No branches or pull requests

3 participants