Как зарегистрировать компонент Headless App при установленном RNNAndroid

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

Сообщение Anonymous »

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

Цель и запрос
Цель — смонтировать автономный компонент приложения в сборке приложения в контексте RNN. Любые указатели с некоторыми примерами кода/репо для достижения этой цели будут ОЧЕНЬ оценены.
Возможно, мой подход к централизации управление в App.js или структурирование кода только в index.js и App.js может быть не идеальным решением. Любые советы о том, как подойти к этим помещениям, также будут полезны.

Метод проб и ошибок
  • Я тестирую процесс монтирования на примере, показанном ниже. Я предположил, что это не обязательно должна быть задача Headless JS или Headless, поскольку функции всего приложения также должны выполняться на переднем плане.
  • Проблема в том, что приложение монтируется правильно (т. е. журнал B и далее журналы) только в том случае, если он включен в качестве компонента пользовательского интерфейса.

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

//log A
const App = () => {
//log B
useEffect(() => {
// log C
return () => //log D
}, []);
return null;
};

export default App;
  • Сначала я пытался использовать AppRegistry для компонента приложения и Navigation для регистрации компонентов пользовательского интерфейса, но журналы не возвращались.

    Сначала я пытался использовать AppRegistry для компонента приложения и Navigation для регистрации компонентов пользовательского интерфейса, но журналы не возвращались.

    ли>

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

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

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

//same module example
...
AppRegistry.registerComponent(appName, () => App);

Navigation.registerComponent('someComponent', () => someComponent);
Navigation.setRoot({
//someComponent as bottomTab
})
  • Затем я попробовал полагаться только на RNN. Но, как и в приведенном ниже коде, журнал B и далее регистрируется только тогда, когда компонент App включен в .setRoot либо как стек, либо как нижняя вкладка.
  • Но для этого потребуется, чтобы компонент приложения был компонентом пользовательского интерфейса, а это не входит в мои намерения.

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

//stack example
...
Navigation.registerComponent('App', () => App);
Navigation.setRoot({
root: {
stack: {
children: [
{
component: {
name: 'App',
},
},
],
},
},
});
  • Наконец, я попробовал различные структуры .setRoot, такие как вложение нижних вкладок внутри приложения, переместив его на тот же уровень, что и приложение. , чтобы не отображать приложение как компонент пользовательского интерфейса, но журнал B и далее не регистрируется для них.

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

//same layer example
...
root: {
stack: {
children: [
{
bottomTabs: {
...
},
},
{
component: {
name: 'App',
},
},
],
},
},
Информация о среде
Тестовое устройство: 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»