Anonymous
Завтра же) 22 по идее вроде)
Макс
сегодня
Макс
21 марта
Anonymous
У нас вся страна бухает) и отмечают 22)
Макс
Я живу в мусульманском гос-ве))) сегодня отдыхаем
Anonymous
У нас в пятницу все ток ворк начнут)
Макс
нифига се
Макс
Я завтра на работу выхожу
Владимир
Владимир
в редаксе очень быстро захлебываешься на большом сторе с кучей экшнов, а тут можно всю аппу запихнуть в один файл и он будет не очень большой
Владимир
не нужны дурацкие константы для экшнов
Владимир
но если очень хочется, можно мобиксом очень ловко сымитировать редакс:)
Aleksandr
Aleksandr
поучается что то вроде моделей, насколько я понимаю, можно положить в map одного стора объекты другого стора, как категории и в них записи
Владимир
ты очень умно пишешь, я не все понимаю:)
Владимир
в общем, модель, да
Владимир
которая не требует немагических действий для обновления вьюшки
Владимир
просто работаешь с ней как с 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
зачем нужен класс User с полем user
это из статьи, там инфа о пользователе, я это к тому, что получается прозрачные отношения между моделями (я возможно не прав, только читаю про мобикс)
Владимир
там много интересного
Владимир
@computed get isOpenLeftPanel() {
return this.show;
}
Владимир
наверное, ребята хотели быть методичными
Владимир
но по факту это какой-то лютый оверинженеринг
Aleksandr
ну если говорить про модели, это нормальная тема
Владимир
я понимаю, ели бы было
@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
andrei
엑시
А че вы все уже страдаете?
엑시
엑시
не вижу слез
Dmitry
да ладнооо
Dmitry
это что правда
엑시
ну будут как-то выворачиваться
Dmitry
вот конченные
Dmitry
то есть если кордова, то ок
Dmitry
а вот если компилится то нет
엑시
я iOS разраб, RN сам по себе бажный, а gomobile уже тоже работает
Dmitry
что за gomobile?
Dmitry
фу
Dmitry
вот уроды
Dmitry
я что-то не фанат такого
Dmitry
но подожди
Dmitry
а разве gomobile тоже не попадет под расдачу?