Как смонтировать компонент безголового приложения, когда установлен RNNAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как смонтировать компонент безголового приложения, когда установлен RNN

Сообщение Anonymous »

В моем приложении RN 0.72.15 я хочу централизовать управление основными и фоновыми функциями всего приложения (например, аутентификация пользователя, обработка сервера, Google Cast).
Я хотите перепрофилировать для этого компонент App, не возвращая JSX. Для компонентов пользовательского интерфейса я использую RNN 7.35.2. Я предположил, что это не обязательно должен быть Headless JS или Headless задача, поскольку функции всего приложения также должны выполняться на переднем плане (и React, похоже, все равно отходит от Headless JS)

Цель и запрос
#1 Цель — реализовать безголовый компонент (т. е. централизовать функции, привязанные к Жизненный цикл React на уровне выше существующего корня компоненты пользовательского интерфейса) и смонтировать его в сборке приложения в контексте RNN.
  • Как зарегистрировать и смонтировать компонент приложения, не полагаясь на .setRoot?
#2 Если его можно смонтировать только тогда, когда компонент приложения находится в корне (т. е. компонент приложения должен возвращать JSX):
  • Как структурировать .setRoot для размещения безголовый компонент, в котором существующий корень имеет нижние вкладки?
  • Как сохранить зависимости от корня более высокого уровня для компонента приложения в существующем корне?
Любые указатели с примерами кода/репозиториями для достижения этой цели будут ОЧЕНЬ оценены.
Метод проб и ошибок для #1
  • Я попробовал использовать AppRegistry для компонента приложения ниже и Navigation для регистрации других компонентов пользовательского интерфейса, но журналы не возвращаются.
  • Код: Выделить всё

    AppRegistry
    прекращает монтирование компонента приложения, когда RNN установлен и связан. Вероятно, это связано с тем, что методы mainapplication и mainactivity переопределяются RNN.
  • Я пытался изменить порядок регистрации компонентов приложения и пользовательского интерфейса, модульно разбивая их на отдельные файлы, но ни одно из этих приложений не смонтировалось. как безголовый компонент

Код: Выделить всё

//App.js
const App = () => {
//log from someFunction_A
useEffect(() => {
//log from someFunction_B
return () => //stop someFunction_B
}, []);
return null;
};

export default App;

//index.js
AppRegistry.registerComponent(appName, () => App);

Navigation.registerComponent('existingComponent', () => existingComponent);
Navigation.setRoot({
//existingComponent in bottomTabs
})
Метод проб и ошибок для №2
  • Я мог бы смонтировать компонент приложения, либо отделив корни, как показано ниже, либо добавив его в виде стека или нижней вкладки в корень существующего компонента
  • Но ни один из шаблонов, похоже, не сохраняет зависимости от someComponent_C после корня переключатель.
    Я пробовал импортировать someComponent_C как функцию в index.js, зарегистрировать и установить его непосредственно в корень, но зависимости по-прежнему не сохраняются.

Код: Выделить всё

//App.js
const App = () => {
//switch root from the App's to the existingComponent's
return ; //encaps functions like A & B above
};

export default App;

//index.js
Navigation.registerComponent('App', () => App);
Navigation.setRoot({
//App
})
Navigation.registerComponent('existingComponent ', () => existingComponent );
Navigation.setRoot({
//existingComponent in bottomTabs
})
Информация о среде
Тестовое устройство: Android 12
Операционная система для разработчиков: macOS 11.7.10
Homebrew: 4.4.8
Оболочка: версия "5.8"
Узел: версия 20.18.0
Пряжа: 1.22.22
npm: версия 10.8.2
Watchman: не найден
CocoaPods: не найден
SDK: macOS 12.1
Android SDK: 34, установленный через Android Studio
Android Studio : 2023.2 AI-232.10300.40.2321.11567975
Xcode: версия 13.2.1/13C100
Java: версия 11.0.25
Ruby: версия 2.6.10
"@react-native-community/cli": не найдена
реакция: установлена : 18.2.0
реагировать-родной: установлено: 0.72.15
Android:
hermesEnabled: true
newArchEnabled: false
iOS:
hermesEnabled: не найдено
newArchEnabled: не найдено

Подробнее здесь: https://stackoverflow.com/questions/792 ... -installed
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»