Так что я в основном пытаюсь обернуть весь навигатор, скажем, в избыточный (но он не является избыточным) следующим образом:
<HOC1>
<HOC2>
<HOC3>
<HOC4>
<TabNavigator />
</HOC4>
</HOC3>
</HOC2>
</HOC1>
Дело в том, что HOC3
и HOC4
выглядят примерно так:
const HOC3 = () = {
if(someCondition){
return {this.props.children}
}
return <Text>Doing some work!</Text>
}
И эти компоненты в основном ждут некоторых условий, а затем возвращают потомков. Вместо <Text>
я бы показал загрузочный счетчик, например.
Поскольку приложение имеет поток аутентификации, я начну с createSwitchNavigator
, который будет переключаться между регистрацией (или createStackNavigator
) и самим приложением (или createBottomTabNavigator
).
Я хочу обернуть вкладки, поэтому я пытался сделать что-то вроде:
const TabNavigator = createBottomTabNavigator({
Page1: { screen: Page1 },
Page2: { screen: Page2 },
})
class AppNavigator extends React.Component {
render() {
return (
<HOC1>
<HOC2>
<HOC3>
<HOC4>
<TabNavigator />
</HOC4>
</HOC3>
</HOC2>
</HOC1>
)
}
}
export default AppNavigator
Однако, что бы я ни делал, это не работает так. Согласно их документам, я должен определить static router
и передать this.props.navigation
навигатору, если я хочу сделать что-то подобное, и даже если я это сделаю, это не сработает. Я не хочу показывать эту навигацию до тех пор, пока не будут выполнены определенные условия, и я не хочу, чтобы навигация обрабатывала эти условия. Итак, в основном: как обернуть вкладку навигатора, которую я передаю переключателю навигатора?