Dmitry
мне вот интересно, кто-нибудь пытался решить такой кейс? При клике открывать свайп-экран, но уже отрендеренным
Dmitry
то есть чтобы экран "выдвинулся" только после того, как получит все данные и отрисуется
чей ты
И что же делать? Как Вы поступили?
Есть два решения
Зафиксировать версию флоу и не обновлять (ну идея так себе)
Для файлов где у нас ошибки убираем аннотацию "//@flow"
Что бы отключить тайпинги ,
Далее при изменение или создании новых файлов мы эти аннотации возвращаем и правим ошибки появившиеся.
Т.е. если какой-то файл трогали то обязательно его типизируем
В итоге через некоторое время вернёте проект к максимальному покрытию типами.
‐---
У нас было около 600+ ошибок сейчас осталось меньше половины
Preeternal
Preeternal
то есть чтобы экран "выдвинулся" только после того, как получит все данные и отрисуется
Как то так: componentDidMount() {
    // 1: Component is mounted off-screen
    InteractionManager.runAfterInteractions(() => {
      // 2: Component is done animating
      // 3: Start fetching the data
      // this.props.dispatchDataFetchStart();
      // 4: set didFinishInitialAnimation to false
      // This will render the navigation bar and a list of players
      this.setState({
        didFinishInitialAnimation: true,
      });
    });
  }
Preeternal
Хотя я наоборот это использую (чтоб до конца отрисовался скрин)
Dmitry
Dmitry
у нас бывает данные 1с идут
Steve
смысл анимаций в том что бы исползовать это время для загрузки
Steve
ставить на паузу все пока анимация не закончится - это какой-то сюр
Steve
по моим бенчам перформанс JSC в два раза выше чем хром о_О
Steve
потому что он отрисовывается пока идет анимация
Steve
мы как раз и использовали опыт телеграма, даже на нативном коде такое сделать это сложно
Steve
телеграм старается максимально быстро начать анимацию
Steve
хах у меня JSC оказывается быстрее в два раза хрома
Steve
на простом коде
чей ты
Steve
t = Date.now(); function a() {}; for (var i = 0; i<1000000000;i++) { a('Hello') }; console.log(Date.now() - t);
Steve
Пока не знаю, я тестировал еще перформанс байндинга
Steve
выходит аж 500к вызовов в секунду (на маке)
Evgeniy
@steve_kite подскажите пожайлуста, чем лучше пользоватся для анимаций?
Gena
И что же делать? Как Вы поступили?
А мы просто не начали использовать flow, а начали использовать typescript. Там тоже умеют с очередным релизом всё переломать, но до сих пор у меня больших проблем было 2 за всё время работы с ts, обе фиксились около часа. Чаще товарищи, которые @types/react-native пилят ломают всё... и вот там иногда приходится поломать голову... но опять же, таких проблем было всего 3-4 за год.
Gena
А вот пример коммита (PR вернее), который демонстрирует качество кода в RN https://github.com/facebook/react-native/pull/23209. Проблема в том, что это довольно сложно исправить теперь, учитывая, что до сих пор изнутри fb временами исходят совершенно непотребные коммиты... Хотя конечно последние месяцы, ситуация чуть чуть начинает сдвигаться в сторону улучшения. Но вот с 0.58 опять косяк на косяке...
Сергій
Steve
вот вот
Steve
я до сих пор офигиваю
Steve
а ты откуда знал про это?
Сергій
говорил с Четом, у них были проблемы с синхронизацией кадров
Steve
ну да давайте сделаем так что бы все лагало)
Сергій
потому и откатили
Steve
работает на всех версиях андроидов - включает обратно
Сергій
Steve
очень лагает
Сергій
🌝
Steve
если хоть что-то тяжелое в UI тред попадет то будет лаг, а так его не будет
Сергій
ну дык
Сергій
и на андроид 9 работать не будет
Steve
даже айфон без core animation лагает, ты не можешь гарантировать что где-то у тебя во вьюхах нет доступа к диску который может дольше чем пара мс тебя залочить
Steve
а что они в девятом сделали? совсем удалили?
Сергій
рефлексию для фреймворка закрыли
Steve
вот блин
Сергій
declaredFields.find - очень медленное )
Сергій
рефлексия же
Steve
обычно лаг в анимации где-то в середине
Steve
или в конце
Сергій
ViewPropertyAnimatorRT он вообще работает?
Steve
тк сначала легкий лоадер показывается, а потом выплеввывается куча вьюшек с данными
Steve
тут лаг может быть только перед анимацией и единоразово
Steve
да работает
Steve
даже слабые девайсы идеально работать начинают с этим хаком
Steve
вообще ни одной проблемы не нашел
Сергій
Чет говорил что у них были артефакты, не доделан он
Steve
ну альтернатива - это что бы у тебя почти всегда подлагивал интерфейс
Dmitry
Проблема в пользователях
Сергій
Steve
хз
Dmitry
Если будет везде лагать по чуть-чуть, то все привыкнут, а если редко кое-где то будут бомбить)
Steve
когда я в телеге работал я еще не знал про этот хак
Steve
ну у нас лагов нет кроме пары мест, как раз при переключении экранов
Steve
это очень бесило
Сергій
может в андроид 10 что-то будет для анимаций )
Steve
У меня три года назад на ютубе была лекция: https://www.youtube.com/watch?v=14Kj_GmbTMw
Steve
там все от начала до конца рассказано
Сергій
посмотрю
Сергій
там все от начала до конца рассказано
не подскажешь, в чем трудность у Android Framework Team сделать быстрый рендеринг шрифтов, они сейчас какими-то обходными путями все решают, этот PrecomputedText
Steve
шрифты всегда тяжело
Steve
и на айфоне тоже медленно
Сергій
тг на канве рисует же быстро
Steve
вроде андроид быстрее
Steve
ну в айфоне такие же канвы считай
Steve
UIKit тоже тупит
Сергій
😳 мне доказывали с пеной у рта что наоборот )
Steve
мне так сказал разработчик телеграма под айфон, я ему доверяю в вопросах скорости
Сергій
хех, открытие для меня
Steve
ты пробовал когда-нибудь хотя бы кастомные emoji запилить?
Steve
Это чрезвычайно сложно