2017-02-22 5 views
6

Я использую официальный react-navigation для обработки моей навигации. У меня есть один главный TabNavigator для всего приложения с двумя вкладками (так называемых HitchhikingMapNavigator и SettingsNavigator ниже), и каждая вкладка имеет вложенную StackNavigator:React-Navigation: не удается скрыть заголовок с вложенными навигаторами

const HitchhikingMapNavigator = StackNavigator({ 
    hitchhikingMap: { screen: HitchhikingMapViewContainer }, 
    spotDetails: { screen: SpotDetailsViewContainer } 
}, { 
    navigationOptions: { 
    header: { 
     visible: false 
    } 
    } 
}); 

const SettingsNavigator = StackNavigator({ 
    // some other routes 
}); 

export default AppNavigator = TabNavigator({ 
    hitchhikingMap: { screen: HitchhikingMapNavigator }, 
    settings: { screen: SettingsNavigator } 
}, { 
    navigationOptions: { 
    header: { 
     visible: false, 
    }, 
}, 
}); 

Как вы можете видеть, я ставлю visilibility заголовков ложь во всем мире, даже в моих HitchhikingMapViewContainer «посмотреть:

class HitchhikingMapView extends React.Component { 

    static navigationOptions = { 
    title: 'Map', 
    header: { 
     visible: false, 
    }, 
    //...other options 
    } 

И все же, строка заголовка остается видимым:

screenshot

Если я не вставлю навигаторы (т. если я поместил этот код, пропуская вложенный один):

тогда заголовок правильно скрыт.

Итак, вывод: я не могу сделать заголовок невидимым, когда у меня есть два вложенных навигатора. Есть идеи?

ответ

10

Для тех, кто все еще ищет ответ, я отправлю его здесь.

Так два решения:

первое решение: использовать headerMode: 'none' в StackNavigator. Это позволит удалить заголовок из всех экранов в 2-ом растворе StackNavigator

: использовать headerMode: 'screen' в StackNavigator и добавить header: { visible: false } в navigationOptions экранов, где вы хотите, чтобы скрыть заголовок.

Более подробную информацию можно найти здесь: https://reactnavigation.org/docs/navigators/stack

+4

Что касается React Navigation 1.0.0-beta.11 header: {visible: false} не работает. Вместо этого используйте header: null. –

2

Это работает для меня:

headerMode: 'none' 
+1

не работает для меня в «реактивной навигации»: «^ 1.0.0-beta.7» ' –

+2

У меня есть« реакция-навигация »:«^1.0.0-beta.9 »и method -> static navigationOptions = {header: false} работает для меня. –

+0

@ DanielArenas Ты мой герой-чувак –

6

Начиная с v1.0.0-beta.9, используйте следующее,

static navigationOptions = { 
    header: null 
} 
0

Это работает для меня, я работаю на андроида стороны в реакции родной версии 0,45

static navigationOptions = { 
    header: null 
} 
0

Это работает для меня, чтобы скрыть навигацию:

static navigationOptions = { 
    header: null 
}; 
Смежные вопросы