2016-10-23 20 views
0

私は今週、React-nativeを学ぶために始めました。私は脳を壊して基本的なナビゲーションをテストしようとしています。私はインターネットの周りを検索し、解決策を見つけられませんでした。ネイティブナビゲーション問題に反応します:遷移

これは私のコードです:私はからナビゲータプロパティを取得できない理由 enter image description here

¿Anybode知っている:

import React, { Component } from 'react'; 
 
import { 
 
    AppRegistry, 
 
    StyleSheet, 
 
    Text, 
 
    View, 
 
    Navigator, 
 
    TouchableOpacity, 
 
    TouchableHighlight, 
 
    Image 
 
} from 'react-native'; 
 

 
class PageOne extends Component { 
 
    constructor(props){ 
 
    super(props); 
 
    } 
 

 
    _handlePress() { 
 

 
    this.props.navigator.push({component:PageTwo}); 
 
    } 
 

 
    render() { 
 
    let pic = { 
 
     uri: 'http://npsapps.com/wp-content/uploads/2015/09/slider1-bg.png' 
 
    }; 
 
    return (
 
     <View style={{flex: 1, alignItems: 'stretch'}}> 
 
     <Image source={pic} style={{flex: 1, alignItems: 'center', justifyContent:'center'}}> 
 
      <TouchableHighlight style={styles.button} onPress={this._handlePress}> 
 
      <Text style={styles.buttonText}>Hello</Text> 
 
      </TouchableHighlight> 
 
     </Image> 
 
     </View> 
 
    ) 
 
    } 
 
} 
 

 
class PageTwo extends Component { 
 
    constructor(props){ 
 
    super(props); 
 
    } 
 

 
    _handlePress() { 
 
    this.props.navigator.pop(); 
 
    } 
 

 
    render() { 
 
    return (
 
     <View style={[styles.container, {backgroundColor: 'purple'}]}> 
 
     <Text style={styles.welcome}>This is page two!</Text> 
 
     </View> 
 
    ) 
 
    } 
 
} 
 

 
class ReactNativeNavigationExample extends Component { 
 
    _renderScene(route, navigator) { 
 
    return <route.component navigator={navigator} /> 
 
    } 
 

 
    _configureScene(route) { 
 
    //return CustomSceneConfig; 
 
    return Navigator.SceneConfigs.FloatFromRight 
 
    } 
 

 
    render() { 
 
    return (
 
     <Navigator 
 
     initialRoute={{component: PageOne }} 
 
     renderScene={this._renderScene} 
 
     configureScene={this._configureScene} 
 
     navigationBar={ 
 
      <Navigator.NavigationBar 
 
      routeMapper={NavigationBarRouteMapper}/>} 
 
     /> 
 
    ); 
 
    } 
 
} 
 

 
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> 
 
    } 
 
}; 
 

 
const styles = StyleSheet.create({ 
 
    container: { 
 
    flex: 1, 
 
    justifyContent: 'center', 
 
    alignItems: 'center', 
 
    backgroundColor: '#F5FCFF', 
 
    }, 
 
    welcome: { 
 
    fontSize: 20, 
 
    textAlign: 'center', 
 
    margin: 10, 
 
    color: 'white', 
 
    } 
 
}); 
 

 
AppRegistry.registerComponent('testProject',() => ReactNativeNavigationExample);

そして、ここでは、私が手にエラーがあります2ページ目?

ありがとうございました。

答えて

0

あなたは_handlePress関数を最初にコンポーネントにバインドする必要があります。 別個の関数を作成する代わりに、矢印関数を使用することもできます。

class PageTwo extends Component { 
    constructor(props){ 
    super(props); 
    this._handlePress=this._handlePress.bind(this) 
    } 

    _handlePress() { 
    this.props.navigator.pop(); 
    } 

    render() { 
    return (
     <View style={[styles.container, {backgroundColor: 'purple'}]}> 
     <Text style={styles.welcome}>This is page two!</Text> 
     </View> 
    ) 
    } 
} 
+0

ありがとう。それは魅力のように機能します! – Khaeden

+0

問題ない幸運! –

関連する問題