Я использую реагировать-нативный код-push .это:
Этот плагин обеспечивает интеграцию на стороне клиента для службы CodePush, позволяя вам легко добавлять динамические обновления в ваши приложения React Native.
но В некоторых нативных реализациях навигации, таких как response-native-navigation , нет корневого компонента.приложение начнет вызывать функцию, подобную этой:
// index.js
import { Navigation } from 'react-native-navigation';
Navigation.startTabBasedApp({
tabs: [
{
label: 'One',
screen: 'example.FirstTabScreen', // this is a registered name for a screen
icon: require('../img/one.png'),
selectedIcon: require('../img/one_selected.png'), // iOS only
title: 'Screen One'
},
{
label: 'Two',
screen: 'example.SecondTabScreen',
icon: require('../img/two.png'),
selectedIcon: require('../img/two_selected.png'), // iOS only
title: 'Screen Two'
}
]
});
// or a single screen app like:
Navigation.registerComponent('example.MainApplication', () => MainComponent);
Navigation.startSingleScreenApp({
screen: {
screen: 'example.MainApplication',
navigatorButtons: {},
navigatorStyle: {
navBarHidden: true
}
},
})
, поскольку нет корневого компонента, неясно, куда я должен вызвать CodePush
, так как обычно я должен обернуть весь корневой компонент с CodePush, каккомпонент более высокого порядка.то, что я делал, было:
// index.js
class MyRootComponent extends Component {
render () {
return <MainNavigator/> // a navigator using react-navigation
}
}
let codePushOptions = {
checkFrequency: CodePush.CheckFrequency.ON_APP_RESUME,
installMode: CodePush.InstallMode.ON_NEXT_RESUME
}
export default CodePush(codePushOptions)(MyRootComponent)
Есть ли правильный способ решить эту проблему!?
Я знаю, что мог бы сделать это:
Navigation.registerComponent('example.MainApplication', () => CodePush(codePushOptions)(RootComponent));
Navigation.startSingleScreenApp({
screen: {
screen: 'example.MainApplication',
navigatorButtons: {},
navigatorStyle: {
navBarHidden: true
}
},
})
но тогда я должен использовать Navigator only для проецирования моего корневого компонента, и это не выглядит хорошей идеей.Я думаю, что эта проблема, вероятно, имеет лучшую практику, которую я ищу.
ОБНОВЛЕНИЕ
Я думаю, что есть некоторые сложности при регистрации навигатора вкладок внутристекнавигатор в react-native-navigation
по крайней мере я не смог преодолеть эту проблему.Пример tabBasedApp
в react-native-navigation
с react-native-code-push
, будет все, что мне нужно.