Anonymous
Завтра же) 22 по идее вроде)
Макс
сегодня
Макс
21 марта
Anonymous
У нас вся страна бухает) и отмечают 22)
Макс
Я живу в мусульманском гос-ве))) сегодня отдыхаем
Anonymous
У нас в пятницу все ток ворк начнут)
Макс
нифига се
Макс
Я завтра на работу выхожу
Владимир
так а чего в результате с MobX? в чем подводные камни в миграции с редакса? есть опыт у кого?
в мобиксе меньше бойлерплейта, но очень большой соблазн не структурировать код
Владимир
в редаксе очень быстро захлебываешься на большом сторе с кучей экшнов, а тут можно всю аппу запихнуть в один файл и он будет не очень большой
Владимир
не нужны дурацкие константы для экшнов
Владимир
но если очень хочется, можно мобиксом очень ловко сымитировать редакс:)
Aleksandr
поучается что то вроде моделей, насколько я понимаю, можно положить в map одного стора объекты другого стора, как категории и в них записи
Владимир
ты очень умно пишешь, я не все понимаю:)
Oleg
Стор это и есть стейт
Лучше определись с выбором уже
Владимир
в общем, модель, да
Владимир
которая не требует немагических действий для обновления вьюшки
Владимир
просто работаешь с ней как с pojo, или в стиле ООП, и вьюхи сами обновляются когда надо
Владимир
можно юзать ``` @observable class A extends React.Component{ store=observable({a: "foo"}); render(){ return <Button onPress={()=>this.store.a = "bar"}>Click me {this.store.a}</Button> } } ```
Владимир
вместо стейта
Владимир
можно вынести из комонента илди вообще в отдельный модуль
Aleksandr
да, это все прозрачно понятно)
Aleksandr
меня больше понравилась вот такая конструкция class User { @observable user = observable.map(); } class UserStore { @observable users; @action putUsers(users) { let userArray = []; users.forEach(user => { userArray.push(new User(user)); }); this.users = userArray; } }
Владимир
мм
Aleksandr
кому интересно, вчерашняя статья на хабре)
Aleksandr
https://habrahabr.ru/post/324388/
Aleksei
let userArray = []; users.forEach(user => { userArray.push(new User(user)); }); this.users = userArray; как это работает? 🤔
Aleksei
а, понял
Владимир
вообще достаточно сделать ``` class UserStore { @observable users = []; @action putUsers(users) { this.users = this.users.concat(users); } } ```
Aleksei
проще map-ом пройтись
Владимир
для того же эффекта
Владимир
зачем нужен класс User с полем user
Aleksandr
а, понял
вырезал часть класса
Aleksandr
зачем нужен класс User с полем user
это из статьи, там инфа о пользователе, я это к тому, что получается прозрачные отношения между моделями (я возможно не прав, только читаю про мобикс)
Владимир
там много интересного
Владимир
@computed get isOpenLeftPanel() { return this.show; }
Владимир
наверное, ребята хотели быть методичными
Владимир
но по факту это какой-то лютый оверинженеринг
Aleksandr
ну если говорить про модели, это нормальная тема
Владимир
я понимаю, ели бы было @computed get isOpenLeftPanel() { return this.show && this.user.hasPermissionToViewMenu(); }
Ми
я понимаю, ели бы было @computed get isOpenLeftPanel() { return this.show && this.user.hasPermissionToViewMenu(); }
я думаю идея была именно в этом, просто пример не удачный
Владимир
а, хотя тут есть >Можно заметить, что мы добавили computed и action декораторы, они обязательны только в strict mode (по умолчанию отключено).
Vladimir
Лучше бы на вопрос мой кто нибудь ответил
Aleksei
Лучше бы на вопрос мой кто нибудь ответил
ты б его повторил что ли 🙂
Vladimir
Тут есть гуру нативных компонентов?
Vladimir
Vladimir Kurchatkin, [20 Mar 2017 22:18]: Тут есть гуру нативных компонентов? Ну или не гуру, а просто в теме Короче, вкину вопрос, может кто знает Нужно сделать метод на инстансе нативного компонента В iOS сделал через self.bridge.uiManager addUIBlock: Соотвественно в метод передается findNodeHandle() первым аргументом Дальше стал разбираться, как это сделать в Андроиде В итоге оказалось что можно сделать примерно так же: getReactApplicationContext().getNativeModule(UIManagerModule.class).addUIBlock Все работает Но почему то и в самом реакт найтиве и в некоторых пакетах это не используется
Vladimir
Vladimir Kurchatkin, [20 Mar 2017 22:27]: ... вместо это используется receiveCommand Соотвественно вопрос - почему так? Vladimir Kurchatkin, [20 Mar 2017 22:27]: Вот пример: https://github.com/mapbox/react-native-mapbox-gl/blob/master/index.js#L41-L61 Непонятно, зачем такой геморрой, если можно сделать абсолютно точно так же
Dima
Потому что addUIBlock это изначальная вещь в ios была, с первых дней, а в андроиде добавили сильно позже и со стороны, чтобы снэпшоты делать. Соответственно к тому времени уже всё было написано на receiveCommand, который еще кажется более безопасным и straightforward, похоже, для среднего пользователя (нужно методы обьявлять заранее, плюс вдруг не нужен ui thread и тд).
Dima
Можно смело использовать, но есть шанс чуть выше чем для ios что выпилят когда-нибудь или перепишут, т.к. внутри проекта вообще нет на него завязок https://github.com/facebook/react-native/search?l=Java&q=addUIBlock&utf8=%E2%9C%93
Dima
Хотя ты и так понял судя по тексту
Vladimir
Ну это была единственная моя теория
Vladimir
receiveCommand слишком уж геморройно
Dima
а что за компонент кстати?
Dima
код не открыт на гитхабе?
Vladimir
Да просто есть куча нативных компонентов, которые надо интегрировать
Vladimir
У многих нужны императивные методы прямо сходу
Vladimir
Странно что из коробки это не поддерживается ни там ни там
Vladimir
C receiveCommand самая жопа что видимо коллбэки не поддерживаются
Vladimir
Вообще я конечно морально готов к тому что это будет отваливаваться при каждом апгрейде
Dima
да, там придется еще тащить события скорее всего, типа doThat() и отдельно onDoThat
엑시
А че вы все уже страдаете?
엑시
엑시
не вижу слез
Dmitry
да ладнооо
Dmitry
это что правда
엑시
ну будут как-то выворачиваться
Dmitry
вот конченные
Dmitry
то есть если кордова, то ок
Dmitry
а вот если компилится то нет
엑시
я iOS разраб, RN сам по себе бажный, а gomobile уже тоже работает
Dmitry
что за gomobile?
엑시
то есть если кордова, то ок
она тоже может тоже попасть под раздачу
Dmitry
фу
Dmitry
вот уроды
엑시
что за gomobile?
https://godoc.org/golang.org/x/mobile
Dmitry
я что-то не фанат такого
Dmitry
но подожди
Dmitry
а разве gomobile тоже не попадет под расдачу?