-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Нужно абортить ns.Update если в момент начала отрисовки у модели state=invalid #649
Comments
Я ж правильно понял, что, вообще говоря, error-мода вьюшки должна рисоваться. Т.е. если следующий апдейт не запустится или в следующем апдейте состояние модели не изменится? |
По идее, error мода нужна для состояния, когда модель в ошибке (state=error). Если считать, что этот кто-то, кто вызывал invalidate затем запустит ns.page.go() - то всё будет хорошо. Итого предложение:
Стало
|
Кул! |
Демо видео https://cl.ly/1q38461f1x2j |
Замутил фикс? :) |
У меня есть одна идея фикса, но она мне не до конца нравится.. |
Пилю тут #650 |
Один из вариантов обхода - не вызывать совсем |
А не инвалидировать модель где? |
Ну где-то в коде ) у нас просто случай ручной инвалидации.. |
под «где» я подразумевал на стороне приложения, да. уточнил, что я правильно тебя понял. но ведь это не решает проблему, в целом, верно? в следующий раз опять кто-то инвалидирует и будет париться что ж там случилось? |
да ( тут есть идея, что может ок рисовать вид с невалидной моделью? |
Мне казалось, что статус |
Я соглашусь с тем, что вот прямо сейчас это место переделать может быть довольно сложно. Это ок. Я сейчас больше про концепцию и признание того, что баг в каком-то виде в этом месте есть. |
Точно есть ) В общем варианта по идее 2:
По идее, оба должны привести к тому, что моргать не будет. |
Если так делать, то где гарантия, что, в итоге, нарисуется актуальный вид? :) Я вот этот момент упускаю |
Гарантии нет ) есть гипотеза, что раз модель невалидна, кто-то должен её перезапросить и отрендерить. aka выполнить ns.page.go(). |
Чтобы лучше понять, попробую привести пример: меняю модель руками, т.е. делаю В таком случае, как будет? |
Вопрос здесь, скорее, делает ли это модель невалидной или нет? |
В таком случае всё хорошо, модель валидна, всё отрисуется не моргнув. |
Ага, понял что я путаю: когда поменял модель, то вид будет невалидным, а не модель. |
yep ) |
Тогда и вправду получается, что если модель невалидная, то кто-то, в итоге, ее все же перезапросит — иначе зачем было помечать невалидной. |
вооооот да ) |
👍 Я ж правильно понял, что если так делать, то существующие тесты не падают? Т.е. более простой фикс получится |
Итого:
Ща заценим ))) |
В ночную смену вышел на работу? ;) |
а сам-то сам ) |
тесты не упали ... что удивительно ) |
Забубенил такой фикс #651 |
В ns.Update есть такой код
У нас есть стабильный кейс (напишу тест), когда глобальный update запускается и в момент отрисовки одна из моделей в состоянии invalid.
Update считает, что модель в состоянии ошибки и рендерит error моду для вида.
Но у нас уже запущен (или вот вот запустится) другой update и всё перерисует.
Кажется, тут надо abort-ить update, а не рисовать error моду иначе всё моргает в интерфейсе.
The text was updated successfully, but these errors were encountered: