Khorark
Дольше всего было два раза (на ios и android) понять как правильно с RN взаимодействовать.
А кроме тебя сможет кто-нибудь поддерживать это решения? На сколько в плане бизнеса оно выгодно получается? Напоминает ситуацию, когда новичок приходит в команду и задаёт вопрос, на каком стеке работаете, а ему говорят, что у нас все самописное. Т.е. по сути ему нужно учить что-то новое, что ему нигде больше не пригодится. В любом случае, ваше решение довольно таки оригинально и было бы интересно почитать про сравнение вашего с RN и RNN.
Gena
А кроме тебя сможет кто-нибудь поддерживать это решения? На сколько в плане бизнеса оно выгодно получается? Напоминает ситуацию, когда новичок приходит в команду и задаёт вопрос, на каком стеке работаете, а ему говорят, что у нас все самописное. Т.е. по сути ему нужно учить что-то новое, что ему нигде больше не пригодится. В любом случае, ваше решение довольно таки оригинально и было бы интересно почитать про сравнение вашего с RN и RNN.
С поддержкой, конечно нужен не js программист, а потенциально два нативщика. С бизнесом интереснее. Мы специально обговаривали этот вопрос для последнего приложения, в частности было опасение, что использование RN будет чревато тормозами, и фактчески условием его применения была возможность в случае необходимости сделать самые важные экраны полностью нативно, поэтому мое решение как раз подходило для этой цели. С новичками есть такое, да. Но мне не нужны новички, которые тупо заучивают один фреймворк, мне нужны люди, которые хотят научиться понимать структуру любой программы, которые способны (или хотят научиться) быть гибкими в современном мире, где каждый год на волне хайпа прилетает новая технология. И, да, командам в которых я работаю, как следствие приходится разделять эти ценности, или мы не работаем вместе )
Gena
Что касается посмотреть, я могу хоть сейчас открыть код (он писался не в рамках текущего проекта), но он довольно бесполезен потому что то же самое можно сейчас сделать с RNN и даже гораздо больше. Изначально он написался, потому что RNN v2 был неюзабелен, а v1 использовать не хотелось. Я на этом коде понял как должна выглядеть навигация и кое-чему научился, но вот делать из него публичный модуль кажется довольно глупым. Но если хочется, могу открыть (сейчас это приватная репа в bitbucket, и меня осенило что интерфес в принципе не правильный в процессе каких-то переделок, так что скорей всего ещё и не запускабельно, не помню уже). В живую его работу можно посмотреть в приложении Yetsi (доступно в русскоязычных маркетах Apple и Google).
Gena
так как должна выглядеть то?) интересно же теперь
Если очень кратко, то первый вариант я написал не понимая как навигация в андроид работает... соответственно как и в RNN были в голове термины stack layout, tabs layout и прочее... Это не очень гибко и плохо вписывается во что-то кроме ios, это даже в RN для ios плохо вписывается. Поэтому сейчас я хочу сделать такое: 1. Есть история конфигураций экранов (буду дальше эту конфигурацию "layout" называть) 2. layout определяет какие компоненты на экране видны и в каком месте (компоненты типа: Header, BottomTabs, ReactRoot, возможно чтоб описать как они расположены придется использовать что-то типа контейнеров) 3. Управление происходит путем модификации истории, т.е. засылается в натив новый желаемый layout, анимации выстраиваются автоматически от текущего (к примеру, сейчас в layout уже есть Header, в новом тоже должен быть, значит это один и тот же Header и анимируются его внутренности). 4. layouts в историю могут быть добавлены/удалены даже если они сейчас не видны на экране. И да, я знаю, что это в каком-то смысле дублирование того, что делает RN рендерер, но он сейчас так написан, архитектура всего этого такая, что я не имею возможности желаемое сформулировать в виде дерева реакт элементов. Если бы была такая возможность, то было бы вообще идеально...
Gena
Время покажет )
Artem
Привет, а от куда и как правильно запускать скрипт, метод, который я хочу запускать при старте приложения? Использую redux. redux-persist. хочу в нем проапдейтить данные. Гугл что-то не выдает результата.
Artem
Да
#sasha
Да
Так чем не подходит componentDidMount в основном компоненте?
Gena
Привет, а от куда и как правильно запускать скрипт, метод, который я хочу запускать при старте приложения? Использую redux. redux-persist. хочу в нем проапдейтить данные. Гугл что-то не выдает результата.
Это потому что под "стартом приложения" можно понимать очень разные вещи. Это когда js начал выполняться? Это когда нативный код выполняется? Может быть, когда activity в android создается? Или когда нативная вьюха появилась? Или когда вы приконнектились к API своему в приложении? Или когда что-то конкретное на экране отрисовалось...
Artem
До момента отрисовки вьюхи
Gena
повторюсь, это когда? До момента отрисовки вьюхи целая жизнь проходит в любом мобильном приложении, а уж в RN и подавно )
Artem
Ну мне нужно проапдейтить данные, который отображаются на вьюхе как раз
Artem
Про componentDidMount спасибо, гляну.
Kto?
Ну мне нужно проапдейтить данные, который отображаются на вьюхе как раз
Ну если данные в джсе, то просто прячь всю логику за сплэшскрин а пттом прячь сплешскрин
Artem
Пока не знаю таких тонкостей, я только начал писать маленькое приложение для себя. На сколько понимаю, при запуске какое-то время инициализируется redux-persist. Вот мне нужно после инициализации redux-persist и перед отрисовкой вьюхи мейн окна.
#sasha
Пока не знаю таких тонкостей, я только начал писать маленькое приложение для себя. На сколько понимаю, при запуске какое-то время инициализируется redux-persist. Вот мне нужно после инициализации redux-persist и перед отрисовкой вьюхи мейн окна.
Зачем ты трогаешь redux-persist, он просто хранит твой redux storage в react native async storage. Ты просто обновляй redux storage при вызове основного компонента (так же это может быть splash screen)
Artem
Спасибо, попробую.
Dr
Всем привет. Использую для навигации react-navigation. Не подскажете, как с react hooks можно поменять заголовок экрана? через классы делается через static navigationOptions = ()=> ({}). А через хуки как это можно сделать?
Dr
А, отбой, все норм. Просто в стек навигаторе было указано название и перебивало то которое указывал в компоненте
9830805fd794d3b8cbee22fe898fefb7
Привет всем. На проекте используем react native track player 1.1.3 , react-native-video 3.2.1 и react-native-airplay-ios В главном компоненте используется Video для слайдера. При логине пользователь может воспроизводить треки с удаленного стриминг сервера а также через airplay стримить на другие устройства. но столкнулись с несколькими проблемами. одна из них - при логауте юзера во время стриминга на другое устройство начинается стрим видоса из слайдера - пока нашел из похожих проблем описанную чисто у юзеров вообще - https://www.reddit.com/r/apple/comments/7tmpyv/its_really_annoying_when_youre_playing_a_video/ Пробовал использовать `Airplay.disconnect ()`во время логаута но он почему то не помогает - залазил в нативный код там [[NSNotificationCenter defaultCenter] removeObserver:self]; пробовал добавлять в пропсы видео компоненту allowsExternalPlayback={false} - не помогло. Кто-нибудь сталкивался с таким?
Anonymous
как установить nuclide FaceBook для Windows в Атом
Konstantin
Я уже спрашивал, но так и не победил. Может у кого есть какие мысли, что я делаю не так.
Konstantin
Подскажите как передать параметр в такой цепочке Есть createAppContainer(createSwitchNavigator( { AuthLoading: AuthLoadingScreen, App: AppDrawerNavigator, }, { initialRouteName: 'AuthLoading', } )); в AuthLoadingScreen, который extends React.Component, я получаю из AsyncStorage параметр someParam делаю this.props.navigation.navigate('App', {someParam: someParam}); где const AppDrawerNavigator = createDrawerNavigator({ Home: { screen: AppStack, }, }, { initialRouteName: 'Home', headerMode: 'float', contentComponent: CustomDrawerContentComponent, }); где const AppStack = createStackNavigator({ AppHome: AppHomeScreen, ... }); вопрос как мне пробросить параметр из AuthLoadingScreen в AppHomeScreen ? при этом в CustomDrawerContentComponent я могу получить тот самый параметр в constructor через props.navigation.state.params.someParam но в AuthLoadingScreen в props.navigation.state даже нет state
Max.
Ребята привет, есть люди кто сталкивался с созданием нативного модуля где под иос код на свифте? Вроде все верно сделал, но сборка падает с Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_RNWebim", referenced from: objc-class-ref in libRNWebim.a(RNWebim.o) l_OBJC_$_CATEGORY_RNWebim_$_RCTExternModule in libRNWebim.a(RNWebim.o) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) Самого по себе кода минимум, https://github.com/StrongSquirrel/react-native-webim/blob/master/ios/RNWebim/RNWebim.m
Max.
Гуглил до дыр, безуспешно^
Никита
Гуглил до дыр, безуспешно^
У меня есть простенькая реализация webim, но не публиковал пока. Или все уже готово и проблема только собрать?
Tim 🥑
Гайз, кто-то работал с react-native-navigation?
Никита
Насчет решения - попробуй создать пустой свифтовый файл в проекте (рядом с AppDelegate.m) xcode предложит briging header создать, соглашайся. Файл не меняй - просто будет висеть
Maxim 📱 D
Гайз, кто-то работал с react-native-navigation?
можешь использовать поиск, зачем просто так спрашивать, конкретики больше, но сначала тут поиск используй, вполне вероятно твоя проблема уже всплывала
Denis
Всем привет! Есть следующая задача: в приложении есть таймер, юзер задает время, открывается коннект к сокету и по истечению этого времени его нужно остановить. Таймер должен работать если юзер закрыл или свернул приложение. Что можете посоветовать для решения этой задачи? Пока что присматриваюсь к react-native-background-timer. Кто-нибудь с ним работал, подойдет ли для текущей задачи? Спасибо!
A
кто-нибудь делал карусель или горизонтальную прокрутку фоток как в инстаграме на react-native-reanimated?
Gena
я думаю что коннект к сокету можно восстановить при открытии этого скрина, но таймер же будет работать?
Таймер тоже можно восстановить... достаточно записать на диск при уходе в бэкграунд текущее время )
Denis
Таймер тоже можно восстановить... достаточно записать на диск при уходе в бэкграунд текущее время )
ага, я понял, спасибо) В таком случае нет смысла таймер на бэкграунде оставлять, если iOS порвет коннект к сокету
Aleksei
кто-нибудь делал карусель или горизонтальную прокрутку фоток как в инстаграме на react-native-reanimated?
https://facebook.github.io/react-native/docs/scrollview#pagingenabled и не надо больше ничего придумывать
Nick
посоветуйте куда копать
PanGestureHandler из react native gesture handler + reanimated event
A
я наверное забыл сказать про свайп
A
по свайпу нужно плавно листать фотки, секции, вперед, назад. автоматизма не надо. просто плавное, независимо от скорости свайпа переключение. и если свайп с задержкой, то когда доводишь до середины экрана, плавное открытие новой секции
Gena
ага, я понял, спасибо) В таком случае нет смысла таймер на бэкграунде оставлять, если iOS порвет коннект к сокету
Но если время существенное, и таки надо обратить внимание пользователя на момент его окончания (чтоб заодно в приложение вошел), то можно попробовать локальное уведомление зашедулить...
GrafMine
ребят, помогите решить эту проблему, все схожие в гугле уже испробовал не один совет не помог.
GrafMine
GrafMine
если что готов уже заплатить-директ))
Andrey
Кто-нибудь работал с синхронизацией данных на React Native? Т.е. переходя с offline в online, данные должны синхронизироваться с сервером. Как именно синхронизироваться с сервером? Есть какие-нибудь либы?
A
странный вопрос 🙂
не глючит, без застреваний, я это имею ввиду. извиняюсь, за непрозрачную формулировку
A
я пробовал react-native-snap-carousel . на андроиде не очень
Aleksei
не глючит, без застреваний, я это имею ввиду. извиняюсь, за непрозрачную формулировку
Если нужно чтобы контенкт был на ширину экрана (а в инсте так), то будет норм. А самому реализовывать такое если есть много свободного времени
Юрий
Кто-нибудь работал с синхронизацией данных на React Native? Т.е. переходя с offline в online, данные должны синхронизироваться с сервером. Как именно синхронизироваться с сервером? Есть какие-нибудь либы?
Напишите свою прослойку, сохраняйте все запросы (в async storage например). после появления соединения выдавайте уведомление, блокируйте интерфейс и синхронизируйте на здоровье
Nick
на базе ScrollView ?
нет, без scrollview
Nick
на базе Animated.View из react-native-reanimated и translateX
Nick
но там придется немножко покурить мануалы
Nick
не самый очевидный api
Narek
а какой версии у тебя RN?
A
ну готового решения я и не нашёл, покурить я не против. просто разобраться как это должно быть хотя по структуре
Narek
попробуй обновится до последней
Narek
и через podfile подключить последний RNFirebase
GrafMine
очень плохая идея, я начинал с самой последней и даунгруйднулся
Kesha
Привет А какие у вас есть самые сложные приложения в сторах? С красивой анимацией, частым обновлением данных и вьюх Чтобы понять чего можно достичь
Kirill
Кто-нибудь работал с синхронизацией данных на React Native? Т.е. переходя с offline в online, данные должны синхронизироваться с сервером. Как именно синхронизироваться с сервером? Есть какие-нибудь либы?
можно попрробовать испольховать https://github.com/rt2zz/redux-persist и какие то тригеры которые будут потом сохрранять и востанавливать состояния
Никита
очень плохая идея, я начинал с самой последней и даунгруйднулся
у меня рн 0.59.8 react-native-firebase 5.4.2 может такая связка заведется
A
Вот эта горизонтальная листалка фоток , как в инсте, с нативным поведением
Anonymous
kak ustanavit react native v atom windows 10
Alexsandr
А что тебе конкретнее надо ?
так просто scrollView pagingenabled