Документация для реагирования на навигацию мне не совсем понятна, как настроить tabBarComponent
помимо простого изменения цвета.Я могу создать свой собственный компонент для вкладок и указать на него так:
import { TabNavigator } from 'myComponentsSomewhere'
...
const Navigator = createBottomTabNavigator(
{
Route1: Route1Component,
Route2: Route2Component,
...
},
{
tabBarComponent: props => <TabNavigator {...props} />,
tabBarOptions: {
activeTintColor: colors.first,
showLabel: false,
},
},
)
На стороне TabNavigator
я получаю нагрузку реквизита, как и следовало ожидать;
activeTintColor: "#d85089",
getAccessibilityLabel,
getButtonComponent,
...
navigation,
...
В рамках navigation
я могу добраться до state
, а затем к маршрутам и т. Д. ... но я не могу отключить ни одну из функций для получения кнопок или отображения значков.(renderIcon
, getButtonComponent
)
Документы по этим функциям слабые, но, глядя на код, кажется, что им обоим требуется объект "route", который содержит key
, routeName
и т. Д..
Эту фигуру можно найти в массиве navigation.state.routes
, но пропуск одного из этих объектов просто приводит к ошибке;
Cannot read property 'key' of undefined
Вот пример того кода, который выдает ошибку;
import React from 'react'
import { View, Text } from 'react-native'
const TabNavigator = props => {
return props.navigation.state.routes.map(route =>
props.getButtonComponent(route),
)
}
export default TabNavigator
В конечном счете, я хочу иметь возможность писать свой собственный код, содержащий вкладки, а не ограничиваться передачей кода в разметку реагирования-навигации.Я не понимаю, почему ни одна из функций рендеринга, полученных в реквизитах, не будет работать при прохождении полного объекта маршрута прямо из навигационной стойки