@reactnative_ru

Страница 309 из 878
Alexey
19.09.2017
08:54:49
по деньгам оч. зависит от того, как договоришься (как и везде, собственно). Минимальная зп, на которую могут пригласить (согласно тк Го) составляет 40 тысяч в год до налогов

налоги большие и прогрессивные

до 52 тысяч в год налог 32%, с суммы выше 52 тысяч, налог 51% или около того

Алексей
19.09.2017
08:55:41
Alexey можно еще пару вопросов по RN ?тут люди жалуются что SC сильно тормозят, емнип ты адаптировал их под RN, есть идеи как уменьшить оверхэд?)

Google
Кирилл
19.09.2017
08:55:47
исусе

Alexey
19.09.2017
08:56:11
однако, для высококвалифицированных специалистов есть скидка на налоги в размере 30% (т.е. 30% дохода не облагается налогами) на 5 лет

SC тормозят под RN? ?

Алексей
19.09.2017
08:58:12
так так, надо вспомнить кто говорил такое ?

Кирилл
19.09.2017
08:58:24
)

Алексей
19.09.2017
08:58:35
)
Кирилл, не ты ли? ?

Alexey
19.09.2017
08:58:40
странно такое слышать, честно говоря. SC используют StyleSheet.create под капотом, сложности могут возникнуть только в динамических стилях

остальное вообще можно транспилить на этапе сборки

Кирилл
19.09.2017
08:59:36
странно такое слышать, честно говоря. SC используют StyleSheet.create под капотом, сложности могут возникнуть только в динамических стилях
да, используют, но создают массив с индексами стилей, поэтому shallowcompare на таких компонентах всегда даст сбой и компонент будет перерендериваться

Алексей
19.09.2017
08:59:37
Я насколько помню был разговор о том что SC создают враппер, и из-за этого якобы увеличивается время рендера ?

Alexey
19.09.2017
08:59:48
но если мы говорим о динамических стилях, то тут никуда не уйдешь - всё равно придется в рантайме считать, какое бы решение Вы не использовали

ну, это тоже верно, но ощутим ли этот оверхед?

это из разряда разговоров о создании функций на каждый рендер

Google
Alexey
19.09.2017
09:00:32
а-ля onClick={() => alert(...)}

Кирилл
19.09.2017
09:00:37
не знаю насколько мой эксперемент был чист, но по моим подсчетам в 1.5 рааз

а-ля onClick={() => alert(...)}
ну да поэтому и делают ссылку на метод класса

Denis
19.09.2017
09:01:06
Алексей, привет. Рад видеть :) Парни, кто ещё с докладом по React Native выступить?)

Alexey
19.09.2017
09:01:20
угу, только если посмотреть бенчи, там получится что-то в районе 5 миллионов операций в секунду

я сильно сомневаюсь, что существует мобильное приложение, которое потребует такую производительность

Алексей
19.09.2017
09:01:43
@iblia а ты где обитаешь? не хочешь выступить? ?

я бы может и выступил, но я в СПБ)

Alexey
19.09.2017
09:02:28
я не особо религиозен в этих вопросах. Мне кажется, подобные вещи стоит оптимизироват в последнюю очередь. Чаще всего есть намного более очевидные ошибки, которые являются причиной проблем с производительностью

Denis
19.09.2017
09:03:01
Кирилл
19.09.2017
09:04:08
я не особо религиозен в этих вопросах. Мне кажется, подобные вещи стоит оптимизироват в последнюю очередь. Чаще всего есть намного более очевидные ошибки, которые являются причиной проблем с производительностью
бесспорно, просто удивил сам подход - почему создается массив, даже если всего 1 стиль - это спасло бы от перерисовки и самого компонента и всех дочерних, а ведь это может быть узким местом

Алексей
19.09.2017
09:05:52
Alexey и еще один вопрос) хотя это скорее не вопрос, а просто у меня есть идея, просто охота обсудить) все тут постоянно страдают с навигацией, и вот идет постоянная борьба js решений, с нативными) что если нам попробовать взять идею с react-native-interactable и реализовать примитивы на нативной стороне, а уже поверх сделать апи как в react-navigation? ?

Алексей
19.09.2017
09:08:09
https://github.com/wix/react-native-navigation - именно то, о чём ты говоришь ?
ну у них все же по другому, они навигацию родную пытаются переиспользовать, и из-за этого куча проблем кмк ?

Alexey
19.09.2017
09:08:37
Да, но если есть возможность не изобретать велосипед, то зачем?

нативная реализация поддерживает огромное количество опций конфигурации

т.е. можно закастомайзить абсолютно всё

Google
Алексей
19.09.2017
09:09:16
Да, но если есть возможность не изобретать велосипед, то зачем?
ну это скорее просто идея, а не желание именно велосипед сделать ?

Alexey
19.09.2017
09:09:30
вопрос просто в том, насколько гранулярный доступ должен был прокинут в JS

ну вообще, это возможно

но тут момент будет

Oleh
19.09.2017
09:10:11
@iblia а ты где обитаешь? не хочешь выступить? ?
Он с Харькова, если не ошибаюсь

Sergey
19.09.2017
09:11:21
подскажите плз модуль для выбора мелодии для нотификации под андроид что бы когда чекнул мелодию оно еще и проиграла

Алексей
19.09.2017
09:13:28
Alexey нет, смысл в другом) просто когда у тебя родная навигация используется, то тебе приходится лезть в нативку на каждый чих, и вот в wix пытаются сделать апи поверх, но как мне показалось в процессе использования, что это не очень возможно, все же апи разные. в react-navigation удобно то, что все в js и из-за этого большой простор для кастомизации. Однако много людей жалуется на перфоманс, да и виден запрос в RN у людей, на более нативное решение. Мне просто понравилось как в react-native-interactable сделали декларативное апи поверх нативной реализации, и поэтому мне кажется, что реализация навигации в таком ключе может быть интересна ?

Albert
19.09.2017
09:13:57
Подскажите почему не кэширует изображения, делаю как в доке? <Image source={{ uri: 'ImageURL', cache: 'default' }}/>

Кирилл
19.09.2017
09:14:23
А можно поподробнее про массив и пр? Я не оч. глубоко знаю SC, было бы здорово узнать что-то новое
Например, у нас есть компонент const view = styled.View`margin-left: 10` После преобразования получится <View style={[112]} /> где 112 - индекс стиля, созданного с помощью StyleSheet.create

Алексей
19.09.2017
09:14:25
Подскажите почему не кэширует изображения, делаю как в доке? <Image source={{ uri: 'ImageURL', cache: 'default' }}/>
по дефолту тебе сервак должен правильные заголовки для кэша отдавать

Igor
19.09.2017
09:15:09
А на каких событиях компонента правильно подвисываться и отписываться от BackHandler ?

Alexey
19.09.2017
09:15:24
но для простых кейсов может сработать

я просто пока не вижу всей картины в целом, тяжело сказать

Albert
19.09.2017
09:16:02
по дефолту тебе сервак должен правильные заголовки для кэша отдавать
Ок, понял, если мне сервак не отправляет, то надо использовать reload?

Кирилл
19.09.2017
09:16:51
Ага, а где здесь просадка?
просадка в том что при проверке [112] !== [122] -> rerender

Alexey
19.09.2017
09:17:16
я полагаю, что SC имплементируют sCU

чтобы такого не происходило

Кирилл
19.09.2017
09:18:46
сейчас нет примера под рукой, но насколько я помню sc не создают дополнительных компонентов с sCU

Google
Kyrylo
19.09.2017
09:19:56
Алексей
19.09.2017
09:20:47
так точно
есть желание в Мск съездить?)

Alexey
19.09.2017
09:22:43
сейчас нет примера под рукой, но насколько я помню sc не создают дополнительных компонентов с sCU
хм, тогда и правда странно. Надо с Максом поговорить, у него наверняка были свои причины

но я прям правда сильно сомневаюсь, что происходит ререндер каждый раз просто из-за сравнения стилей

тема визуального отображения компонентов никогда не была моей сильной стороной, но будет интересно сделать небольшой ресёрч на эту тему ?

Kyrylo
19.09.2017
09:26:59
есть желание в Мск съездить?)
та и возможности нет ?

Alexey
19.09.2017
09:31:05
хм, тогда и правда странно. Надо с Максом поговорить, у него наверняка были свои причины
вообще, я думаю это сделано на уровне RN даже (проверка style). Array notation встроен в RN и не является частью SC, а следовательно оптимизации должны быть сделаны на уровне самого RN

Алексей
19.09.2017
09:31:54
та и возможности нет ?
очень жаль, я бы хотел вживую послушать например про твой подход к стилям ?

Kyrylo
19.09.2017
09:37:14
? Спасибо, но пока довольствуюсь локальными. Может когда-то и поменяется это ¯\_(ツ)_/¯

Alexey
19.09.2017
09:37:38
сейчас нет примера под рукой, но насколько я помню sc не создают дополнительных компонентов с sCU
https://github.com/facebook/react-native/blob/1e8f3b11027fe0a7514b4fc97d0798d3c64bc895/Libraries/StyleSheet/StyleSheet.js#L149 я так понимаю, что RN сам по себе преобразует [] в {}

так что нет разницы, используешь ли ты [] или {}

Кирилл
19.09.2017
09:41:36
так что нет разницы, используешь ли ты [] или {}
если я ничего не путаю это вообще не об этом.. по ссылке метод StyleSheet.flatten, который как раз из айдишек делает обьект и лишает нас оптимизайций бриджа: Refering to style objects directly will deprive you of these optimizations

Alexey
19.09.2017
09:42:52
Насколько я помню, было много планов реализовать эту оптимизацию, но она так и осталась "в планах", по крайней мере так говорят комменты в том же классе

если мы говорим об одном и том же: https://github.com/facebook/react-native/blob/1e8f3b11027fe0a7514b4fc97d0798d3c64bc895/Libraries/StyleSheet/StyleSheet.js#L80

Alexey
19.09.2017
09:45:16
но опять же, эта часть RN не моя сильная сторона, я могу ошибаться

но я не верю, что используя [] ноды будут перерисоввываться. Они будут участвовать в процессе реконсилиации(? reconciliation), но это не будет влеч за собой ререндеринг

или я по прежнему не о том говорю? ?

Кирилл
19.09.2017
09:48:56
но я не верю, что используя [] ноды будут перерисоввываться. Они будут участвовать в процессе реконсилиации(? reconciliation), но это не будет влеч за собой ререндеринг
почему не будут? Если я правильно понимаю как раз будут, ведь по ссылке массивы разные - значит компонент изменился - нужно перерисовать

разве нет?

Google
Кирилл
19.09.2017
09:50:08
секунду, mad skillz history search

Alexey
19.09.2017
09:52:15
будут сравниваться не массивы, а reference id смерженых стилей

т.е. [foo, bar] смержатся в baz и baz'у будет присвоен id. Если при сл. реконсилиации смерженные стили будут совпадать с baz, то перерисовки не произойдет

по крайней мере это то, как я понимаю это ?

Кирилл
19.09.2017
09:54:58
а вот, нашел, но я сам пример тогда не скинул(

через ReactPerf замерил рендер 5000 styled.View и <View style={...}/>

Alexey
19.09.2017
09:57:45
так, и что по итогу?

кстати, ты использовал SCv2

там просто препроцессинг появился, что может существенно оптимизировать рантайм время

Кирилл
19.09.2017
10:01:55
кстати, ты использовал SCv2
неа, тогда была вроде первая версия, тогда понравилась что стили создаются через StyleSheet.create, даже если используются props для каждого нового значения props создаются отдельные стили со своим индексом. Но вот массив смутил и не стал продолжать

Alexey
19.09.2017
10:03:30
вот тут вот есть подробное описание (чтобы не пересказывать весь changelog): https://medium.com/styled-components/announcing-v2-f01ef3766ac2

тут речь идёт о ssr для веба, но где-то был тред про rn

Кирилл
19.09.2017
10:05:02
т.е. [foo, bar] смержатся в baz и baz'у будет присвоен id. Если при сл. реконсилиации смерженные стили будут совпадать с baz, то перерисовки не произойдет
я может сейчас что-то не так совсем скажу но в моем представлении происходит так: в момент сравнения реактом сравниваются аттрибуты компонента атрибуты - непримитивы сравниваются по ссылке - массивы не равны помечает этот компонент, что его надо перерисовать далее уже вступает RN если он дальше "по умному" сравнивает стили и решает что все же перерисовывать на нативной стороне не надо - круто

Alexey
19.09.2017
10:05:50
я думаю, что он делает это на JSе и нода не передается через мост в нативку

надо покопаться в коде и найти эту часть

Кирилл
19.09.2017
10:07:22
я думаю, что он делает это на JSе и нода не передается через мост в нативку
ну да я и имел в виду на js-e решает, на нативной стороне всмысле не надо перерисовывать

Alexey
19.09.2017
10:07:51
ага, мне кажется, так и происходит, но надо посмотреть

Alex
19.09.2017
10:27:41
Добрый день, можете пожалуйста подсказать, могу ли я как то заюзать в react native - console.log, если работаю с expo ?

Страница 309 из 878