Я понял, что Для этого подойдет компонент приложения, поэтому я пытаюсь реализовать его без рендеринга пользовательского интерфейса. Что касается компонентов пользовательского интерфейса, я использую 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 для регистрации компонентов пользовательского интерфейса, но журналы не возвращались.
ли>прекращает монтирование компонента приложения, когда RNN установлен и связан. Вероятно, это связано с тем, что методы mainapplication и mainactivity переопределяются RNN.Код: Выделить всё
AppRegistry - Я пытался изменить порядок регистрации, модульно распределить задачи по отдельным файлам, но ни один из них не смонтировал приложение как безголовый компонент.
Код: Выделить всё
//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
Мобильная версия