Vladimir
Я бы сказал так, писать на RN только на бумаге и в курилке быстрее. По факту мы сейчас код, вместо того чтобы писать один раз, пишем три раза - на котлине под андроид, на свифте под айос и бизнес логику и врапперы на js для RN. Почему? Потому что как только что-то сложное, кастомное, с анимациями, оказывается что нативка вытирает ноги обо все и никуда от этого не деться. Бизнес логика - да, удобно. Стоит оно того? Только если у компании ОЧЕНЬ много денег или ОЧЕНЬ скромные запросы.
Vladimir
кстати, спрошу у эксперта по котлину, где сильнее выведение типов, в котлине или во flow?)
Я далеко не эксперт, но в котлине, как по мне, выведение предсказуемей. Но это скорее связано с тем что в джаве в принципе нет утиной типизации, что сильно упрощает жизнь в этом смысле.
Aleksei
Я далеко не эксперт, но в котлине, как по мне, выведение предсказуемей. Но это скорее связано с тем что в джаве в принципе нет утиной типизации, что сильно упрощает жизнь в этом смысле.
я к тому что после того же окамла в принципе не охота писать сигнатуры типов, хотелось бы чтобы компилятор сам выводил 🙂
Vladimir
я к тому что после того же окамла в принципе не охота писать сигнатуры типов, хотелось бы чтобы компилятор сам выводил 🙂
ну в таком случае котлин отличный выбор, я когда возвращаюсь на джаву прям страдаю теперь.
Vladimir
Эм так а без RN нужно будет делать тоже самое, только еще и бизнес логику дублировать
не знаю как в ваших приложениях, но в тех, в разработке которых я учавствовал, бизнес логика это от силы 5% кода. Мобилки это про клиент, про UI, анимации и юзер экспириенс. Вся бизнес логика должна быть вынесена на сервер, в идеале.
⩔wein
не знаю как в ваших приложениях, но в тех, в разработке которых я учавствовал, бизнес логика это от силы 5% кода. Мобилки это про клиент, про UI, анимации и юзер экспириенс. Вся бизнес логика должна быть вынесена на сервер, в идеале.
Мм, ну это от приложения сильно зависит и от подходов. Сервер очень часто это очень примитивный апи сервер и все, а большая часть бизнес логики в приложении
Vladimir
Мм, ну это от приложения сильно зависит и от подходов. Сервер очень часто это очень примитивный апи сервер и все, а большая часть бизнес логики в приложении
Так в этом часто и проблема. Безусловно, есть приложения в которых должна быть логика. Но для большинства разумней по максимуму все закрыть простым API и выкинуть на сервер, там и скейлить проще и фиксить быстрее/прозрачней.
⩔wein
Кроме того RN великолепен для приложений которые раньше бы писались на cordova. По сути прямой апгрейд
Vladimir
Vladimir
Кроме того RN великолепен для приложений которые раньше бы писались на cordova. По сути прямой апгрейд
безусловно, переход от вебвью в нативный рендеринг это отлично. Вопрос в том стоит ли нативные приложения переписывать на RN?
Vladimir
я понял, вопрос в том окупается ли - если да, то RN отличный выбор.
Vladimir
Просто сейчас на волне хайпа его пытаются использовать везде, где нужно и где нет.
⩔wein
безусловно, переход от вебвью в нативный рендеринг это отлично. Вопрос в том стоит ли нативные приложения переписывать на RN?
Для упрощения разработки в отдельных случая может быть. Я бы смотрел по количеству нативных модулей, если все приложение только из них по сути и состоит то RN странный выбор конечно
Aleksei
Для упрощения разработки в отдельных случая может быть. Я бы смотрел по количеству нативных модулей, если все приложение только из них по сути и состоит то RN странный выбор конечно
не соглашусь) часто все забывают букву R в RN) я лично не видел нормального декларативного описания в нативке (в коде, манифест и IB не считаются 🙂)
⩔wein
не соглашусь) часто все забывают букву R в RN) я лично не видел нормального декларативного описания в нативке (в коде, манифест и IB не считаются 🙂)
Так декларативность будет заканчиваться при переходе в нейтив и в результате будет микс из декларативности и императивности.
⩔wein
это норм, те же монады так и устроены например
Просто контролировать анимацию из js допустим не получится же
⩔wein
Ну. Можно но плохая идея
Aleksei
Просто контролировать анимацию из js допустим не получится же
контроль анимации это не про декларативность так то)
⩔wein
Я к тому что если большая часть приложения из нативных модулей - от декларативности мало что останется
Aleksei
по факту есть всем знакомый пример - браузер. html разметка очень даже декларативна, вы говорите на сервере, ЧТО отрисовать, а ИМПЕРАТИВНЫЙ движок уже позаботится о деталях
⩔wein
вы видимо как то не так понимаете декларативность
Перефразирую - в процентном соотношении часть приложения написанная в декларативном стиле будет примерно равна части приложения написанной на js. Если большая часть приложения - нативные модули - большая часть приложения будет вполне императивной.
⩔wein
Можно конечно просто воспринимать нативные модули как вещи в себе, про которые я просто знаю их внешнее апи и использую в своем JS приложении и в таком случае они, внешне, вполне декларативны
⩔wein
тут как бы нет смысла рассматривать в черно белом цвете, либо то, либо то. имхо даже небольшая часть описанная декларативно это хорошо
Ну, тут на практике зависит дает ли нам это достаточно преимуществ в плане облегчения поддержки/разработки приложения, в сравнении с если бы приложение было целиком нативное? Я честно говоря не знаю, не писал приложений где бы они прям вот совсем из кастомных нативных модулей состояли.
Aleksei
Ну, тут на практике зависит дает ли нам это достаточно преимуществ в плане облегчения поддержки/разработки приложения, в сравнении с если бы приложение было целиком нативное? Я честно говоря не знаю, не писал приложений где бы они прям вот совсем из кастомных нативных модулей состояли.
опять же имхо - для меня большой плюс что в RN приложении мне не обязательно даже знать что внутри компонента до поры до времени) надо будет сделать быстро новую фичу, сделаю на js из View, да будет не нэйтив лук, но зато быстро. со временем спокойно можно будет переписать на нэйтив)
Aleksei
это кстати для меня большой вопрос в том же Kotlin Native, там не будет реакта)
Vladimir
Я лукавлю немного, часть нативных компонентов, таки оказалось плолне возможно реализовать в JS, с приемлемым оверхэдом, но тенденция именно такая.
Vladimir
Ну менеджерам интересно, девелоперам весело. Все счастливы.
Anonymous
Кто ни будь пробовал вызывать Picker при клике на Button? В плане открытие списка опций?
Aleksei
все козыри вскрыл 😄
Vladimir
нет, все же очень субъективно, никто не ждет чуда, понятно что аллокаций будет больше, понятно что сборщик мусора будет недоволен, но если работает с приемлемой производительностью - хорошо, если нет - перерисуем попроще или напишем костылей на нативке.
Vladimir
причем чаще второе, чем первое
Vladimir
зависит сильно от контекста, лист состоящий из абсолютно разных айтемов будет работать примерно с той же памятью, лист из одинаковых айтемов можно математикой просчитать умножив память на один айтем на общее число и разделив на число айтемов влезающих на экран плюс 4
Vladimir
по крайней мере для андроида
Vladimir
краткий ответ от нуля и до бесконечности, зависит от конкретного случая 🙂
Vladimir
так нам же за это деньги и платят, вроде 🙂
Kyrylo
@kozhevnikovv за rn много говорят про переиспользованность кода, а так как 90% это верстка ui и зачастую она отличается между платформами- есть ли тот от rn ?
Vladimir
Так я же писал про это выше. Зависит от конкретных потребностей. Если у вас много бизнес логики - да, смысл имеет. Если нет, то только если у вас много веб девелоперов которых нечем занять и есть нативщики готовые им помочь решать конкретные проблемы. В моих приложениях, субъективно переиспользование кода очень ограничено и занимает минимум от кодовой базы.
Vladimir
Ну то есть 5% о которых я писал выше это очень оптимистичная оценка, но и проект достаточно специфичный. Возможно объективная статистика даст сильно больший результат.
Kyrylo
вот у меня в проектах так же. все в основном бизнес логика максимум на сервере. и на клиенте в основном один ui
Vadim
Парни, кто пользуется code push после его переезда в appcenter? Расскажите впечатления свои
Anonymous
Привет. Ребят при вызове дебагинга ошибку винда пишет, chrome not found. Хотя пути даже поставил, chrome есть. Кто сталкивался, отпишите
Vagan
Ребят кто толковый курс порекомендует?
Vagan
Реакт натив
Vladimir
https://github.com/react-native-village/react-native-init
Alex
всем привет ребят подскажите кто юзает NativeBase почему на iOS все работает а пробую на андроид то все слова в кнопках в футерах и в хедерах сокращены хотя места хватает ? А также не скролится на андроиде (( спасибо
Vagan
Спасибо Владимир!!
Alexey
Привет, может кто-нибудь помочь разобраться с навигацией?
Alexey
У меня есть главный StackNavigator в котором как screen указан компонент который содержит небольшую разметку, например "Home" и в разметке этого компонента у меня есть TabNavigator. Структура примерно такая: StackNavigator |— Home |— TabNavigator |— TabA |— Settings Немогу из "TabA" перейти на экран с настройками. Как я понял из-за того, что я использую TabNavigator внутри компонента, а не напрямую передаю его StackNavigator-у теряется контекст и TabNavigator не знает о родительких маршрутах. Никто с таким не сталкивался?
Alex
Ребят кто знает как запретить во время перехода через stack navigator вернутся назад ? Даже если ставлю header null все равно можно пальцем вернуться назад
Alex
Спасибо буду пробовать !
Sergey
?
Anonymous
Подробней
Alex
Доброе утро! Ребят кто юзает nativebase как в card передать данные из json ? гайдик бы подробный а то индусовские не работают варианты
Illiа
Привет всем, кто подскажет как записать в state данные подгружаемые из AsyncStorage, я создал функцию getLocal в которой гетятся AsyncStorage, вызываю её в componentDidMount() но они не записываются...
Roman
getLocal - async?
Illiа
getLocal в которой выполняется AsyncStogate.getItem()...
Illiа
Peter
AsyncStorage это Promise, нужно использовать async, await подход или как Promise.then.catch
Illiа
Illiа
в консоле after getLocal() всеравно пусто, только стейт видно into auth и into lang
Elijah
Потому что оно ассинхронное
Elijah
Консоль лог выполняется до окончания getLocal
Illiа
одним словом в компонентДидМоунт я не увижу обновленный стейт?
Elijah
Сделай getLocal промисом, а в componentDidMount лог вызывай из .then
Peter
async componentDidMount() { const email = await AsyncStorage.getItem('@Auth:email'); const password = await AsyncStorage.getItem('@Auth:password'); }
Maxim
Привет, кто-нибудь знает как удалить приложение с itunesconnect, если оно не проходило стадию "Ready for Sale"?
Alexey
@mighty_ramen никак. пишете в саппорт apple
Władimir (Zae)
есть ли какой то способ обойти ограничение в 15 мин для бекграунд тасок на андроиде?