Dmitry
Ну, я соглашусь с тем, что не стоит тащить технологию в стек, только ради технологии, не понимая с чем ее едят =)
Ivan
Я не говорю что redux это панацея
Dmitry
это как минимум дорого
Ivan
Ты больше убьешь времени на написание стора, чем на документацию редакса
Dmitry
это слишком дорого, это станет ясно. когда нужно будет включать других разработчиков
Dmitry
популяризация решений играет значимую роль в командной разработке
Ivan
Пятница, вечер, простительно :)
Ivan
Решение должно быть простым и легким
И! Понятным остальным, легко сопровождаемым, легко расширяемым
Gena
Но в целом, я не поклонник redux тоже... считаю его самообманом )))
Ivan
Но в целом, я не поклонник redux тоже... считаю его самообманом )))
А чем заменить? Так чтобы удобно, практично и не костылить
У меня вот такая архитектура работы с данными:
Запрос на сервер, в ответе на запрос обработка данных и отправка в redux store из которого уже данные тянут мой UI
Сделано с redux для того, чтобы данные могли изменятся из разных местл и эти изменения были бы прозрачны всем компонентам + в action для моего стора прописано кеширование данных в AsyncStorage
Ivan
Просто я «как делать» черпаю из блогов на медиуме и подобном
И после долгого изучения и понимания вообще что такое redux пришел именно к такой архитектуре
Dmitry
это не развитие, это - прокрастинация
Dmitry
какой смысл гавнокодить только для того, чтобы тебя не погнали с проекта)
Dmitry
такое себе утверждение
Dmitry
тогда ладно)
Dmitry
я просто с такими сталкивался, могу и бомбануть 😄
Ivan
А если Б изменил те данные, которые показывает А?
Ivan
Или исходя из которых А изменяет вообще свой внешний вид?
Ivan
Главное чтоб ты мог читать свой код и радоваться
Особенно после перерыва в пол годика. А то a = f+k максимально не информативный говнокод ж который сам забудешь че делал
Ivan
Не, компоненты читаю определенные, нужные им данные из стора
Ivan
Ну и опять же, цитируя тебя, я пришёл именно к такому архитектурному решению
Ivan
Никто не говорит что это идеальная архитектура
Но она понятна и прозрачна(на мой взгляд опять же) и идёт разделение кода где компоненты слепо изпользуют стор, не думаю как оно там хранится, как это менять и как об этом сообщить кому нужно
Ivan
Тут конечно пример реальный нужен как у меня всё устроено
Но всё на корпоративном svn лежит и не опенсурсно, сори :)
Ivan
Хм
Вот открыл википедию
А я походу всё это время что-то похожее как раз на flux и делал
Gena
Я из мира OOP пришел в js, это, судя по всему, очень сильно влияет на архитектуры создаваемые... )
К примеру, я категорически не люблю не структурированные данные. И не люблю в модели разделять данные и методы для работы с ними. Поэтому state tree мне кажется возвращением к redux.
Я обычно пишу модель как классы, к примеру:
class User {
@observable id: string
@observable name: string
@observable email: string
@action
fromJSON(data: any) {
if (typeof data !== 'object') throw new Error('...')
if (data.id) this.id = data.id
...
}
}
class Users {
@observable byId: ObservableMap<string, User> = observable(new Map())
get(id: string): User {
return this.byId.get(id)
}
}
Gena
Ну вот я рассматриваю это всё как классические модели в mvc и прочих схемах... Единственное отличие, это то, что не надо самому городить кучу событий, помнить их все и подписываться/отписываться в нужный момент. Всё это делает mobx почти автоматом, плюс computed, autorun и прочие плюшки
Gena
За-то это отлично уезжает от UI в отдельные модули, в которые можно не только данные, но и логику складывать. Это элементарно тестируется и легко читается.
Ivan
Да, неплохо, ближе к классическом ООП и мвц
Ivan
Вернее я бы даже сказал что это не js код 😂
Ivan
Он на него практически не похож
Gena
Это typescript, в смысле там аннотации типов проставлены )
Плюс эффективность. Сам mobx в принципе не шустрый (если синтетические тесты гонять между ним и тем же redux), но в реальных ситуациях, из-за мелкогранулярных подписок, мы получаем ререндер "островками", только теми компонентами, которые действительно используют изменившиеся данные. В redux же по умолчанию (если спец усилий не прилагать) мы будем ререндерить (верней реконсайлить) всё сверху вниз...
Alexandr
Как исправить? при установке npm install —save firebase На одном из проектов он установился, а тут чет не хочет
Eugene
А пропса которое это бы выключало у старых моделей, я что-то не увидел 🤔
Gena
А пропса которое это бы выключало у старых моделей, я что-то не увидел 🤔
Он это же делает и на новых моделях. SafeArea - это в том числе и элементы системных декораций, а если бы это был не RN, а нативный кодинг, то в неё бы входили ещё и системные табы из UITabBarController и заголовок навигации из UINavigationController.
Идея SafeAreaView не в том, что в неё слепо заворачивают всё приложение, а в том, что в неё заворачивают только элементы, которые должны быть "foreground" для пользователя, т.е. не должны накладываться на системные UI. Остальные элементы приложения (не обернутые в SafeAreaView) служат как бы фоном и спокойно уезжают и под системные UI и под неровности экрана, создавая у пользователя ощущение того, что дизайн приложения распространяется на весь экран.
Eugene
Ну, я отказался в итоге от оборачивания всего приложения, а только нужных скринов, ну и только на новых устройствах..
Посмотрим как оно будет работать 🤔
Eugene
Он это же делает и на новых моделях. SafeArea - это в том числе и элементы системных декораций, а если бы это был не RN, а нативный кодинг, то в неё бы входили ещё и системные табы из UITabBarController и заголовок навигации из UINavigationController.
Идея SafeAreaView не в том, что в неё слепо заворачивают всё приложение, а в том, что в неё заворачивают только элементы, которые должны быть "foreground" для пользователя, т.е. не должны накладываться на системные UI. Остальные элементы приложения (не обернутые в SafeAreaView) служат как бы фоном и спокойно уезжают и под системные UI и под неровности экрана, создавая у пользователя ощущение того, что дизайн приложения распространяется на весь экран.
Про конкретные элементы интересно, надо бы почитать
Oleksandr
Gena
а чем mobx существенно лучше чем redux?
"существенно"? Пожалуй, тем что вы можете построить более структурированную архитектуру.
А вообще их сложно сравнивать именно как два продукта, это два принципиально разных подхода к нотификациям об изменениях:
redux - вот вам всего один хэндлер, одно событие, дальше сами разбирайтесь, что поменялось. Зато интерфейс простой.
mobx - у нас есть столько хэндлеров, сколько observable сущностей... и для упрощения жизни автоматический трекинг подписок...
Alexandr
Ребят, как установить firebase? Npm install --save firebase начинает устанавливаться. А после запускает node-pre-gyp а тот выдает ошибки
Vitaly
Alexandr
Alexandr
На одном из проектов работает нормально. На втором почему-то не устанавливается
Ivan
Ivan
Как бэ пакет называется по-другому чем вы пишите
От того наверное и беда?
Vitaly
вот вот, немношк не так устанавливаешь
Alexandr
О блин, не та ссылка. На сайте docs.expo.io
Vitaly
если експо, то не факт что линканешь этот пакет, но я точно не знаю шо там и как в експо
Ivan
Уточняли бы сразу что проблемы с экспой
Как уже часто писалось, туда вроде как нельзя вкарячивать пакеты
Alexandr
Как?
Aynur
Как?
ты же уже создал проект без expo, зачем ты пытаешься ставить пакеты, которые только для экспо
Alexandr
Aynur
потому что он для экспо
Aynur
Aynur
я и не спорю, на то они и универсальные
Dmitry
Не кто не сталкивался с зависанием приложения на симуляторе iOS при использовании Modal из react-native ?
不退転」
Dmitry
вообще ничего не делаю просто сделал импорт и кинул в компонент
Dmitry
релоад приложения проходит 1 раз, потом зависает и отрубается
Dmitry
ошибок никаких нет
Dmitry
это происход если у модалки visible=true
Dmitry
Нашел ошибку
Dmitry
*** Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'child view controller:<UIViewController: 0x7fd399f2b6f0> should have parent view controller:(null) but actual parent is:<RNSScreen: 0x7fd399f2ebe0>'
***
Dmitry
такая штука падает в лог
Dmitry
Хм, проверил 6 версий RN и на всех одно и то же.. это странно
Ivan
Странно. У меня в рутовой вьюхе лежит модалка для отображения процесса загрузки
И ни разу не падало из-за неё ничего
Рн 0.59.3 вроде
Dmitry
Да у меня вот сейчас началось, обновил react-navigation и react-native-gesture-handler
Dmitry
пока не знаю в чем именно проблема
Kto?
Kto?
Попробуй откатить гестхендлер на пару семвер назад
Мағжан
Добрый вечер всем
Мағжан
Кто знает как можно использовать const enum в React Native (TypeScript), я просто новичек в этом деле. Если подробнее, У меня есть React + Typescipt приложение(Web), Я пытаюсь на основе ее создать моб приложение... Все исправление в виде смена компонентов на нативный компонент уже сделал. И вот в последний момент возник эта проблема.
проект создавал через react-native init App --presets typescript,
Dmitry
А в чем проблема то
Gena
Gena
Последний пункт вот здесь описан: https://github.com/facebook/metro/issues/314#issuecomment-437941330
Vadim
Нормально же поддерживать андроид с 19 версии?
Vadim
Вроде там процент остаётся
Vadim
Староверов