Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 导航栏';s routeMapper不是一个函数_Javascript_Reactjs_React Native - Fatal编程技术网

Javascript 导航栏';s routeMapper不是一个函数

Javascript 导航栏';s routeMapper不是一个函数,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我有一个非常简单的导航条,我正试图连接起来。我想做的就是在我的页面顶部显示一个导航栏(稍后我会担心导航到其他页面)。但是,当我在Navigator上添加navigationBar道具时,会出现错误“this.props.routeMapper[componentName]不是函数”。如果我注释掉导航栏而不使用它,我的代码运行时不会出错 由于routeMapper应该是一个对象,我不确定它为什么会给出那个错误。我的代码贴在下面。我使用的是React原生v21。有什么想法吗 var routeMap

我有一个非常简单的导航条,我正试图连接起来。我想做的就是在我的页面顶部显示一个导航栏(稍后我会担心导航到其他页面)。但是,当我在Navigator上添加navigationBar道具时,会出现错误“this.props.routeMapper[componentName]不是函数”。如果我注释掉导航栏而不使用它,我的代码运行时不会出错

由于routeMapper应该是一个对象,我不确定它为什么会给出那个错误。我的代码贴在下面。我使用的是React原生v21。有什么想法吗

var routeMapper = {
  title: function() {
    return (
      <View><Text>Title</Text></View>
    );
  }    
};

class TryNavigator extends Component {
  renderScene(route, nav) {
    return (
      <View>
        <Text>Hi</Text>
      </View>
    );
  }

  render() {
    return (
      <Navigator
        initialRoute={{id: 0, title: 'My Page'}}
        renderScene={this.renderScene}
        navigationBar={
          <Navigator.NavigationBar
            routeMapper={routeMapper}
          />
        }
      />
    );
  }
}
var路由映射={
标题:函数(){
返回(
标题
);
}    
};
类TryNavigator扩展组件{
渲染场景(路线、导航){
返回(
你好
);
}
render(){
返回(
);
}
}

NavigationBarRouteMapper采用三个函数参数:

LeftButton(route, navigator, index, navState) { 
  // some component or null 
}
RightButton(route, navigator, index, navState) { 
  // some component or null 
}
Title(route, navigator, index, navState) { 
  // some component or null 
}
试着这样做:

var NavigationBarRouteMapper = {
  LeftButton(route, navigator, index, navState) {
    if(index > 0) {
      return (
        <TouchableHighlight
          underlayColor="transparent"
          onPress={() => { if (index > 0) { navigator.pop() } }}>
          <Text style={ styles.leftNavButtonText }>Back</Text>
        </TouchableHighlight>)
    } 
    else { return null }
  },
  RightButton(route, navigator, index, navState) {
    if (route.onPress) return (
      <TouchableHighlight
         onPress={ () => route.onPress() }>
         <Text style={ styles.rightNavButtonText }>
              { route.rightText || 'Right Button' }
         </Text>
       </TouchableHighlight>)
  },
  Title(route, navigator, index, navState) {
    return <Text style={ styles.title }>MY APP TITLE</Text>
  }
};
var NavigationBarRouteMapper={
LeftButton(路线、导航器、索引、导航状态){
如果(索引>0){
返回(
{if(index>0){navigator.pop()}}>
返回
)
} 
else{return null}
},
右按钮(路线、导航器、索引、导航状态){
如果(route.onPress)返回(
route.onPress()}>
{route.rightText | |'右键'}
)
},
标题(路线、导航器、索引、导航状态){
返回我的应用程序标题
}
};

不久前,我在RouteMaper工作的情况下设置了一个演示。

太棒了!我没有意识到我应该实现这三点。原来问题是我的标题是小写的,而不是大写的。啊。我也没意识到!