Valentin
Боюсь, не поможет, потому что он это чудо создал )))
Ну, кто знает, кто знает. Энивей, Surface is coming. :) Так что инвестировать время в эксперименты с этим сейчас вполне оправдано.
Gena
Вау! ))) Ну вот ща посмотрим, что накопаем )
Vitaliy
Как я понимаю, для связки ноды и реакт нэйтива библиотека
Больше похоже что для развертывания ноды на мобилке. Локальный мобильный "бэкенд". Имхо, оверхед, если только не требуется что-то сверхкрутое обсчитывать в фоне. Лишняя нагрузка на устройство и т.д. - для большинства простых задач вполне хватает webview в фоне. https://medium.com/@inkdrop/a-simple-way-to-run-js-in-background-thread-on-react-native-8fff345576da
Gena
Меня беспокоит несколько вещей связанных с Surface. Выглядит-то оно как правильное решение. Но. 1. Не используется в тестах в коде RN, 2. Есть внешний к фейсбуку (а возможно и внутри) код, который знает о том, что в верху иерархии есть объект с классом RCTRootView
Cenator 🐈
какое очередное? я про нижнее подчеркивание
Gena
@savelichalex А реальный юзкейс для RCTSurface насколько я понимаю заключается в том, что его можно вставить в систему родного лэйаута в оси. Т.е. он нормально коммуницирует в натив собственные размеры компонента. Вот такое RCTRootView делать не умеет насколько я понял.
Gena
Но для полноэкранной навигации это не очень актуально. Там мы сами размеры в RN спускаем из натива.
Eugene
))
Cenator 🐈
нет проблемы писать onPress={this.onPress}, про мировую практику ты выдумал, чаще называют как то вроде handle*SMTH*Press либо чисто onPress
Gena
ну звучит прикольно) жаль с ходу не могу юзкейс придумать
Нативны UITableView, где ячейки заскинованы на RN
Vitaliy
ты работал с этим?
У меня в проде сейчас часть приложения на webview + postMessage построена. Покрывает сложные моменты рендеринга и некоторые вычисления. Начиная с android 4.4+ и iOS 8+ проблем не было, а скорость рендеринга поднял раз в 8-10, если правильно помню.
Gena
Потому что в браузерных движках лэйаут синхронный
Vitaliy
Вот это, кстати, стыкуется с моей идеей, что если layout pass в yoga перенести в UI thread и соптимизировать, то всем будет счастье )
Там еще задача специфическая была, текст в определенном виде верстать (в тексте размечены мелкие inline-картинки, которые при этом должны быть интерактивными - по нажатию в RN отображается новое окно), а в RN именно такой вариант верстки по-моему под android падал. Пришлось разбивать по словам и каждое оборачивать в тег (иначе слишком сложные правила парсинга получались), а при очень большом количестве элементов рендеринг в RN страдает сильно. В итоге передал эту задачу браузеру.
Anton
Приветствую. У кого был опыт разработки под Android TV? Как решали проблему с управлением через пульт/D-pad? В частности интересует сама навигация между элементами и подсветка активного элемента UI.
Gena
Ну, кто знает, кто знает. Энивей, Surface is coming. :) Так что инвестировать время в эксперименты с этим сейчас вполне оправдано.
Ну вот сейчас итог такой, что после отката к обычному RCTRootView, размер внутренних вью RN теперь нормально устанавливается. Не знаю, где я конкретно забыл вызвать setSize на Surface или инициировать лэйаут, но факт остаётся фактом. RCTRootView работает, RCTSurface (по крайней мере RCTSurfaceHostingView) - нет. )
Artem
Пытаюсь сделать следущую вещь: внизу основное меню в виде табов. В одном этих табов отображается экран в котором под шапкой два таба и их тоже можно переключать (соответственно разный контент). Использую react-navigation. Какие варианты только не перепробывал чтобы сделать такое - не выходит. Кто-нибудь сталкивался с таким кейсом, как решать? Кажется что это максимально простой кейс, но вот что-то застрял на нем
Artem
createBottomTabNavigator({ MyTab: createBottomTabNavigator() })
В таком варианте у MyTab не будет заголовка над табами
Artem
В смысле заголовка?
Ну вот как на скрине выше - Home. Будет просто к верху прижатый таббар
Artem
Вот так будет выглядеть, без шапки над верхними табами @Kl4ssT
Gennadiy
В таком варианте у MyTab не будет заголовка над табами
По идее такое вложение нужно сделать BottomTab - > stack - > topTab
Artem
По идее такое вложение нужно сделать BottomTab - > stack - > topTab
Увы но также без заголовка. Стек просто даёт возможность сделать несколько экранов в рамках одного нижнего таба.
Valentin
Иначе не работает. И вот теперь, видимо я попал на какой-то очень частный случай, когда viewDidLayoutSubviews не вызывается, а размер меняется (анимации, что ли... не знаю пока... дебажу)
Ну, весь поинт SurfaceHostingView в том что оно ведет себя в точности как нормальное UIView и если ты видишь что где-то оно не раьботает так как положено, то лучшее решение будет понять почему оно не работает и поправить внутри. Устанавливать размеры для Surface снаружи - в общем-то дорога вникуда.
Valentin
Сама реализация HostingView очень простая, наверняка если проблема в нем, то это не должно быть сложно починить.
Artem
Заголовок вроде бы именно от стака даётся, стак с одним экраном.
У стека разве его модно задать? Что-то не нахожу (
Gena
Ну, весь поинт SurfaceHostingView в том что оно ведет себя в точности как нормальное UIView и если ты видишь что где-то оно не раьботает так как положено, то лучшее решение будет понять почему оно не работает и поправить внутри. Устанавливать размеры для Surface снаружи - в общем-то дорога вникуда.
Оно ведет себя как нормальное вью, а вот реакт компонент в нем рендерится неправильно. Если не устанавливать размеры Surface, то это вообще не работает (реакт реднерится в размерах 0x0), если устанавливать, то работает, но иногда (предположительно в этом замешаны анимации как-то, но раскопать точнее не смог) не правильно обновляет размеры внутренних вьюх...
Gennadiy
У стека разве его модно задать? Что-то не нахожу (
В опциях к скрину можно, когда создаешь
Artem
В опциях к скрину можно, когда создаешь
Получается что ТопБар будет просто рендерится внутри одного из скринов в стеке ?
Gena
И да, у Surface в документации написано, что надо ставить размеры снаружи (SurfaceHostingView это не делает): https://github.com/facebook/react-native/blob/master/React/Base/Surface/RCTSurface.h#L56
А, нет, сорри, похоже пытается делать, по крайней мере здесь: https://github.com/facebook/react-native/blob/master/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.mm#L69
Gena
Надо будет ещё поэкспериментировать значит
Dmitry
Вообще подчеркивание условно указывает на приватные методы класса, к которым не стоит обращаться снаружи. Это просто визуальная имитация для других разработчиков, что эти методы только для использования внутри класса.
Dmitry
Например this._keyExtractor = () => {}
Gena
@shergin В общем я торжественно обещаю ещё поэкспериментировать с Surface, т.к. считаю что его архитектура гораздо лучше, чем RCTRootView. Но придется это отложить немного. Сейчас у меня релиз на носу. Возможно тут и баги в UIKit играют... к примеру недавно наткнулся на то, что UINavigationController будучи вставлен в кастомный UIViewController не обновляет (и не спускает вниз по иерархии в некоторых случаях) изменения в SafeArea динамические... т.е. всякое возможно.
Max
Всем привет.
Max
Max
Подскажите, пожалуйста, что хочет от меня андроид студио?) Сделал все по инструкции реакт-натива, но проект не взлетает... в Андроид студио выкидывает вот это -
Max
Есть у кого нормальная инстукция, как запустить реакт-натив на андроид студио? и есть ли вообще такая
Anton
открой папку андроид, а не весь проект
Cenator 🐈
код редактируй там где удобно, эмулятор запускай через кансоль
Max
о как, неожидано...
Max
спасибо, сейчас попробую
Ruslan
Установил react-native-firebase, link сделал, прила валится при таком
Anton
через поды надо ставить
Ruslan
С линком все так печально?
Anton
https://rnfirebase.io/docs/v5.x.x/installation/ios
Max
Max
Может кто подсказать, что ему надо?
Anton
эмулятор или реальное устройство
Max
В андроид студио есть вот такой, это оно? Пробывал его оттуда вручную запускать, запускается и сам закрывается...
Max
Anton
intel процессор?
Max
да, интел, виртуализация в биосе включена
Anton
попробуй версию апи ниже, создай другой эмулятор
Gena
Есть у кого нормальная инстукция, как запустить реакт-натив на андроид студио? и есть ли вообще такая
Да. Ни в коем случае не надо открывать проект. Надо делать import папки android в проекте (и после каждого rm -rf node_modules; npm install делать этот импорт заново).
Ruslan
https://rnfirebase.io/docs/v5.x.x/installation/ios
Сделал, указал необходимое в подфайле pod 'Firebase/Core', '~> 5.15.0' pod 'Firebase/Auth' , '~> 5.15.0' pod 'Firebase/Firestore', '~> 5.15.0' pod 'Firebase/Database', '~> 5.15.0'
Ruslan
все равно падает
Anton
все равно падает
pod install сделал?
Anton
Тогда хз, так сложно сказать
Gena
все равно падает
Можете Podfile расшарить (через gist например)?
Gena
Да, конечно, сейчас
И сразу вопрос мелкий, попробуйте после pod install открыть в Xcode <project>.xcworkspace (не .xcproject, это важно) и из Xcode запустить?
Ruslan
Сейчас попробую
Ruslan
Можете Podfile расшарить (через gist например)?
https://gist.github.com/ruslanzharkov/12a87fb1d1c5232bc209bed3738046f4
Gena
https://gist.github.com/ruslanzharkov/12a87fb1d1c5232bc209bed3738046f4
Сейчас в Podfile прописаны только зависимости для самого Firebase, ни React Native, ни react-native-firebase там нет. Это значит, что всё остальное надо линковать в основной проект (через react-native link или вручную). Это то, что вы хотели получить? (я спрашиваю, потому что в зависимости от изначального плана это может быть верная или не верная конфигурация)