2016-07-23 1 views
0

В < Навигатор />, основываясь на текущем имени route.name, я хочу сделать следующее, но я получаю сообщение об ошибке: «route not defined». Почему это так? И как мне это сделать?Inside React Native <Navigator/>, как мне передать текущее имя route.name?

<Navigator 
... 
navigationBar={<Navigator.NavigationBar style={route.name == 'Home' ? styles.homeNavBar : styles.normalNavBar} .../> 
/> 

Заранее благодарю вас!

ответ

0

route не определен, потому что эта переменная не указана для вас нигде в этом коде. Если вы хотите изменить стиль, но по-прежнему использовать Панель навигации, вы лучше писать так: https://stackoverflow.com/a/33697459/1487687

Ваш объект NavigationBarRouteMapper будет маршрут впрыскивается в каждой функции:

var NavigationBarRouteMapper = { 
    LeftButton: function(route, navigator, index, navState){ 
    return(
     <Text>{ route.leftButton }</Text> 
    ) 
    }, 
    Title: function(route, navigator, index, navState){ 
    return(
     <Text>{ route.title }</Text> 
    ) 
    }, 
    RightButton: function(route, navigator, index, navState){ 
    return(
     <Text>{ route.rightButton }</Text> 
    ) 
    } 
} 

Если вы вам нужно настроить панель непосредственно, вам лучше создать свой собственный компонент навигационной панели. Я бы взглянул на источник, чтобы получить эту идею: https://github.com/react-native-community/react-native-navbar

+0

Я пытаюсь стиль самой панели навигации, например, изменить его цвет, а не его компоненты. Будет ли способ вокруг этого с моим подходом? Например, если на определенном маршруте панель навигации синяя, а на другой навигационной панели она будет красной. –

+0

Проверка, что вы получили мой последний комментарий. Пожалуйста, дайте мне знать. –

+0

Похоже, что единственный способ состоит в том, чтобы обернуть панель навигации и использовать сокращение или какой-либо другой способ для получения текущего маршрута: https://github.com/facebook/react-native/issues/2560#issuecomment-139919812. В этом выпуске рассказывается об использовании решения на основе потока https://github.com/facebook/react-native/issues/3926#issuecomment-154688017. – zackify

0

Вы можете получить текущий маршрут следующим образом: navigator.getCurrentRoutes(), где навигатор - объект Navigator. В вашем примере, вы, вероятно, придется использовать this.getCurrentRoutes или ссылаться на него как на следующую ссылку предлагает:

https://facebook.github.io/react/docs/more-about-refs.html

+0

Вот суть. Знаете ли вы, что я делаю неправильно? Стиль navBar по-прежнему не обновляется, даже если компонент Home передан. –

+0

https://gist.github.com/jaewonch/8d56d9f598fe68103b4454f31d6ba7f8 –