Как перенести мультиплатформенное приложение в React Native?

Я начал копаться в интеграции React Native в существующие приложения, и я имею в виду настоящие индустриальные приложения (версии одного и того же приложения для iOS и Android), которые мы хотим реорганизовать с использованием как можно большего количества RN, чтобы собрать вместе кодовые базы (есть также существующая веб-версия).

Мы уверены, что в том числе несколькоRCTRootView совместное использование одного и того же моста - лучший подход для нас, начиная с базовых представлений контента (где совместное использование кодовых баз проще и выгоднее) и итерацией, чтобы превратить все больше и больше частей приложения в RN (анимация, навигация и т. д.).

Но когда мы исследовали этот подход, возникло несколько вопросов, как технических, так и организационных.

Во-первых, хотя мы не хотим быть iOS-первыми или Android-первыми, платформа Android, похоже, не имеет такой же зрелости, как платформа iOS для такого рода работы. Мы столкнулись с некоторыми проблемами, такими как:

ReactRootView не соответствует жизненному циклу React, в отличие от iOSRCTRootViewНет API для обновления реквизита:https://github.com/facebook/react-native/issues/6303Невозможно включитьReactRootView внутри родного прокрутки. Это ограничение существует с первого дня выпуска Android (см.https://github.com/facebook/react-native/issues/9022)

Следующее не является на самом деле «проблемой», но добавляет некоторые сомнения по поводу поддержки Android.
IOS частьинтегрирующий документ ясно упоминает, что можно начать просмотр, используя существующий мост (initWithBridge, API тоже явный).
В Android в том же документе упоминается, что несколько представлений могут совместно использоватьReactInstanceManager, но если вы выставляете 2 компонента в своем комплекте и используете его, вам придется звонить дваждыstartReactApplication и вы увидите 2 строки в консоли Chrome
Running application "XXX" with appParams
Running application "YYY" with appParams
Звучит не очень оптимизировано для меня ... Я действительно создал 2 целых "RN-приложения" здесь?

При этом мы ищем отзывы и ответы:

Что касается платформы Android, разумно ли синхронизировать рефакторинг на обеих платформах или нам лучше превратить приложение iOS в RN, а затем в Android?Как далеко мы можем пойти в RN-представлениях, отображаемых одновременно? 10, 20 просмотров одновременно?Наше приложение «ориентировано на данные». Является ли хорошей идеей сначала перенести выборку данных в приложении Redux в мире RN? Я предполагаю, что мы должны предоставить данные и уведомить об обновлениях магазина в родном мире: каков наиболее эффективный способ сделать это? (Родные модули делает общение на другой стороне легким, нативным по отношению к RN, но они кажутся бесполезными для этой цели).Кроме того, как организовать VCS? Является ли перемещение четырех базовых кодов (iOS, Android, Web и RN) в моно-хранилище необходимым шагом?

Ответы на вопрос(0)

Ваш ответ на вопрос