Я пытаюсь реализовать пользовательский навигатор на основе TabRouter с React Navigation с настраиваемыми сложными анимациями и поведением, более или менее подобным способу перелистывания CoverFlow.
Существуют примеры того, как это сделать с помощью StackRouter, но ни один из них не работает при переходе на TabRouter.
До сих пор я понял, что для получения навигатора, такого как TabNavigator, мне понадобится такая функция:
(routeConfigs, config = {}) => (
createNavigationContainer(
createNavigator(TabRouter(routeConfigs, config))(MyNavigationView)
)
);
с тем, как реализовать MyNavigationView
, являясь моим основным запросом.
Документы чрезвычайно поверхностны для каждого компонента навигатора, большую часть времени сохраняя описание в одном предложении. Итак, что именно и какова роль:
- маршрутизатор
- навигационный вид
- Переходный (я должен использовать один?)
Должен ли я (и как) визуализировать все сцены в моей функции _renderScene
?
Как скрыть сцены, которые не отображаются в данный момент?
Я думаю, что я должен использовать PanResponder из MyNavigationView
для обработки жеста смахивания. Должен ли я (и, если да, как) обновить состояние маршрутизатора при переходе пользователя к новой сцене?
Кроме того, я не хочу использовать AnimatedTabView
из react-native-tab-view
, который TabNavigator использует внутри, поскольку он не работает для меня на iOS (конфликт между ScrollView и PanResponder, который, вероятно, не будет исправлено на некоторое время )
Это много вопросов, но я немного растерялся. Я много смотрел на источники React Navigation, но они все еще оставляют меня в замешательстве.
Даже частичный ответ поможет.