реакция-навигация tabBarComponent не может прочитать свойство "ключ" неопределенного - PullRequest
0 голосов
/ 31 января 2019

Документация для реагирования на навигацию мне не совсем понятна, как настроить 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

В конечном счете, я хочу иметь возможность писать свой собственный код, содержащий вкладки, а не ограничиваться передачей кода в разметку реагирования-навигации.Я не понимаю, почему ни одна из функций рендеринга, полученных в реквизитах, не будет работать при прохождении полного объекта маршрута прямо из навигационной стойки

1 Ответ

0 голосов
/ 08 февраля 2019

Оказывается, я не правильно прочитал ошибку, которая фактически сказала мне все, что мне нужно было знать ...

Cannot read property 'key' of undefined

getButtonComponent (и все остальныефункции в navigation prop) требуют объекта с включенным маршрутом, а не только маршрут.

getButtonComponent({ route }) вместо getButtonComponent(route)

Простота побеждает ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...