Kirill
А можно поподробнее про массив и пр? Я не оч. глубоко знаю SC, было бы здорово узнать что-то новое
Например, у нас есть компонент const view = styled.View`margin-left: 10` После преобразования получится <View style={[112]} /> где 112 - индекс стиля, созданного с помощью StyleSheet.create
Aleksei
Подскажите почему не кэширует изображения, делаю как в доке? <Image source={{ uri: 'ImageURL', cache: 'default' }}/>
по дефолту тебе сервак должен правильные заголовки для кэша отдавать
Igor
А на каких событиях компонента правильно подвисываться и отписываться от BackHandler ?
Alexey
но для простых кейсов может сработать
Alexey
я просто пока не вижу всей картины в целом, тяжело сказать
Albert
по дефолту тебе сервак должен правильные заголовки для кэша отдавать
Ок, понял, если мне сервак не отправляет, то надо использовать reload?
Kirill
Ага, а где здесь просадка?
просадка в том что при проверке [112] !== [122] -> rerender
Alexey
я полагаю, что SC имплементируют sCU
Alexey
чтобы такого не происходило
Kirill
сейчас нет примера под рукой, но насколько я помню sc не создают дополнительных компонентов с sCU
Aleksei
так точно
есть желание в Мск съездить?)
Alexey
сейчас нет примера под рукой, но насколько я помню sc не создают дополнительных компонентов с sCU
хм, тогда и правда странно. Надо с Максом поговорить, у него наверняка были свои причины
Alexey
но я прям правда сильно сомневаюсь, что происходит ререндер каждый раз просто из-за сравнения стилей
Alexey
тема визуального отображения компонентов никогда не была моей сильной стороной, но будет интересно сделать небольшой ресёрч на эту тему 🙂
Kyrylo
есть желание в Мск съездить?)
та и возможности нет 🙂
Alexey
хм, тогда и правда странно. Надо с Максом поговорить, у него наверняка были свои причины
вообще, я думаю это сделано на уровне RN даже (проверка style). Array notation встроен в RN и не является частью SC, а следовательно оптимизации должны быть сделаны на уровне самого RN
Aleksei
та и возможности нет 🙂
очень жаль, я бы хотел вживую послушать например про твой подход к стилям 😉
Kyrylo
🙂 Спасибо, но пока довольствуюсь локальными. Может когда-то и поменяется это ¯\_(ツ)_/¯
Alexey
сейчас нет примера под рукой, но насколько я помню sc не создают дополнительных компонентов с sCU
https://github.com/facebook/react-native/blob/1e8f3b11027fe0a7514b4fc97d0798d3c64bc895/Libraries/StyleSheet/StyleSheet.js#L149 я так понимаю, что RN сам по себе преобразует [] в {}
Alexey
так что нет разницы, используешь ли ты [] или {}
Kirill
так что нет разницы, используешь ли ты [] или {}
если я ничего не путаю это вообще не об этом.. по ссылке метод StyleSheet.flatten, который как раз из айдишек делает обьект и лишает нас оптимизайций бриджа: Refering to style objects directly will deprive you of these optimizations
Alexey
Насколько я помню, было много планов реализовать эту оптимизацию, но она так и осталась "в планах", по крайней мере так говорят комменты в том же классе
Alexey
если мы говорим об одном и том же: https://github.com/facebook/react-native/blob/1e8f3b11027fe0a7514b4fc97d0798d3c64bc895/Libraries/StyleSheet/StyleSheet.js#L80
Alexey
но опять же, эта часть RN не моя сильная сторона, я могу ошибаться
Alexey
но я не верю, что используя [] ноды будут перерисоввываться. Они будут участвовать в процессе реконсилиации(? reconciliation), но это не будет влеч за собой ререндеринг
Alexey
или я по прежнему не о том говорю? 😳
Kirill
но я не верю, что используя [] ноды будут перерисоввываться. Они будут участвовать в процессе реконсилиации(? reconciliation), но это не будет влеч за собой ререндеринг
почему не будут? Если я правильно понимаю как раз будут, ведь по ссылке массивы разные - значит компонент изменился - нужно перерисовать
Kirill
разве нет?
Kirill
секунду, mad skillz history search
Alexey
будут сравниваться не массивы, а reference id смерженых стилей
Alexey
т.е. [foo, bar] смержатся в baz и baz'у будет присвоен id. Если при сл. реконсилиации смерженные стили будут совпадать с baz, то перерисовки не произойдет
Alexey
по крайней мере это то, как я понимаю это 🤔
Kirill
а вот, нашел, но я сам пример тогда не скинул(
Kirill
через ReactPerf замерил рендер 5000 styled.View и <View style={...}/>
Alexey
так, и что по итогу?
Alexey
кстати, ты использовал SCv2
Alexey
там просто препроцессинг появился, что может существенно оптимизировать рантайм время
Kirill
кстати, ты использовал SCv2
неа, тогда была вроде первая версия, тогда понравилась что стили создаются через StyleSheet.create, даже если используются props для каждого нового значения props создаются отдельные стили со своим индексом. Но вот массив смутил и не стал продолжать
Alexey
вот тут вот есть подробное описание (чтобы не пересказывать весь changelog): https://medium.com/styled-components/announcing-v2-f01ef3766ac2
Alexey
тут речь идёт о ssr для веба, но где-то был тред про rn
Kirill
т.е. [foo, bar] смержатся в baz и baz'у будет присвоен id. Если при сл. реконсилиации смерженные стили будут совпадать с baz, то перерисовки не произойдет
я может сейчас что-то не так совсем скажу но в моем представлении происходит так: в момент сравнения реактом сравниваются аттрибуты компонента атрибуты - непримитивы сравниваются по ссылке - массивы не равны помечает этот компонент, что его надо перерисовать далее уже вступает RN если он дальше "по умному" сравнивает стили и решает что все же перерисовывать на нативной стороне не надо - круто
Alexey
я думаю, что он делает это на JSе и нода не передается через мост в нативку
Alexey
надо покопаться в коде и найти эту часть
Kirill
я думаю, что он делает это на JSе и нода не передается через мост в нативку
ну да я и имел в виду на js-e решает, на нативной стороне всмысле не надо перерисовывать
Alexey
ага, мне кажется, так и происходит, но надо посмотреть
Алексей
Добрый день, можете пожалуйста подсказать, могу ли я как то заюзать в react native - console.log, если работаю с expo ?
Алексей
по докам вообще понять не могу..
Aleksei
Добрый день, можете пожалуйста подсказать, могу ли я как то заюзать в react native - console.log, если работаю с expo ?
я не большой сварщик expo конечно, но просто в RN замечательно работает. главное Remote Debugger включить
Алексей
я не большой сварщик expo конечно, но просто в RN замечательно работает. главное Remote Debugger включить
это вещь, о которой говориться здесь ? https://facebook.github.io/react-native/docs/debugging.html#chrome-developer-tools
Алексей
да
сори за глупые вопросы, я вообще новичек.. в браузере я не нашел такие пункты, она включается в xCode каком нибудь?
Kyrylo
в меню приложения
Алексей
видел.. я уже как только его не тряс, думал что то не так делаю, может эта тема отключена где то
Алексей
а в меню приложения expo тоже не нашел, сейчас еще раз гляну..
Алексей
в меню приложения
у меня в приложении как такового меню даже нет.. только вот
Kyrylo
Тут запускаешь приложение и уже в нем пытаешься вызвать меню. У меня в эмуляторе андроида вызывается кнопкой меню, стандартной
Junior
Зайди в свою апку
Junior
Я не юзаю expo, но гугл выдал мне вот это первой ссылкой https://docs.expo.io/versions/latest/guides/logging.html
Kyrylo
разницы нет экспо или не экспо
Алексей
разницы нет экспо или не экспо
Все разобрался, только через пару лет использования планшета, узнал, что зажатие кнопки запущенных приложений открывает меню приложения )
Алексей
всем спасибо
Kyrylo
да, это оно 🙂 Оно окрытает его только на стадии разработки. В релизе - этого меню не будет
Алексей
я понял. Как вообще, реально, разрабатывать приложения не используя Android Studio ?
Kyrylo
вполне
Kyrylo
я никогда не пользовался
Алексей
вполне
и нативный код, я так полагаю, совсем в редких случаях пишется?
Kyrylo
ну от задачи зависит.
Алексей
от проекта зависит
а я правильно понимаю, что он пишется в том случае, если необходимо сделать что то возможно быстрое или с какой то функцией телефона по определенному взаимодействовать?
Ulad🧑‍💻
Как сгенерировать вторую релизную версию для андроид? Сделал по инстуркции но при попытке установки пишет что
Ulad🧑‍💻