在React Native <navigator>中,如何引用传入的当前route.name?

时间:2016-07-23 21:24:24

标签: javascript ios react-native react-jsx

In&lt; Navigator /&gt;,基于传入的当前route.name,我想做以下操作,但是我收到一个错误:'route is not defined'。为什么会这样?我该怎么做呢?

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

提前谢谢!

2 个答案:

答案 0 :(得分:0)

route未定义,因为此代码中的任何位置都没有提供该变量。如果您想要更改样式,但仍然使用NavigationBar,那么最好不要这样写: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

答案 1 :(得分:0)

您可以像这样获取当前路径:navigator.getCurrentRoutes()其中navigator是Navigator对象。在您的示例中,您可能必须使用this.getCurrentRoutes或引用它,如下面的链接所示:

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