2017-08-11 50 views
0

錯誤:「未定義是不是一個對象(計算‘這個,props.navigation.navigate’)」在本地做出反應

收到錯誤導航一個頁面時,其他頁面陣營本土。

錯誤:

undefined is not an object(evaluating 'this,props.navigation.navigate')

代碼:

import { StackNavigator,NavigationActions } from "react-navigation"; 
const Navigation = StackNavigator({ 
    Home : { 
    screen : Home 
    }, 
}) 
export default class App extends React.Component { 
    submit =() => { 
    this.props.navigation.navigate('Home'); 

} 
    render() { 
    return (
     <View style={styles.container}> 
     <Text>Enter Log</Text> 
     <TextInput style={styles.input} 
      multiline={true} 
      underlineColorAndroid="transparent" 
      placeholder="Enter Log" 
      placeholderTextColor="#9a73ef" 
      autoCapitalize="none" 
      onChangeText={this.handlePassword} /> 
     <TouchableOpacity style={styles.submitButton} onPress={() => submit } >  
        <Text style={styles.submitButtonText}> Submit </Text> 
     </TouchableOpacity> 
     </View> 
    ); 
    } 
} 
} 

回答

0
  1. 試着改變你的onPress值這樣:

    onPress={this.submit}  
    
  2. 阿爾斯o,我沒有看到你將你的Home組件導入到你指定爲屏幕的位置。

+0

變化後給出了錯誤:找不到變量:提交 使用鏈接:HTTPS://facebook.github。 io/react-native/docs/tutorial.html –

+0

除了我提出的建議之外,你還做過其他更改嗎? 嘗試只留下「{submit}」,而不要「this」。並且沒有「()=>」。這背後的原因是你不需要調用提交函數,只需傳遞它。 – Eduard

0

你必須綁定你的方法:

import { StackNavigator,NavigationActions } from "react-navigation"; 
const Navigation = StackNavigator({ 
    Home : { 
    screen : Home 
    }, 
}) 
export default class App extends React.Component { 

    constructor(props) { 
     super(props); 

     this.submit = this.submit.bind(this); 
    } 


    render() { 
    return (
     <View style={styles.container}> 
     <Text>Enter Log</Text> 
     <TextInput style={styles.input} 
      multiline={true} 
      underlineColorAndroid="transparent" 
      placeholder="Enter Log" 
      placeholderTextColor="#9a73ef" 
      autoCapitalize="none" 
      onChangeText={this.handlePassword} /> 
     <TouchableOpacity style={styles.submitButton} onPress={this.submit} >  
        <Text style={styles.submitButtonText}> Submit </Text> 
     </TouchableOpacity> 
     </View> 
    ); 
    } 

    submit() { 
     this.props.navigation.navigate('Home'); 
    } 

} 

說明:Binding context when calling ES6 method. How to access object from within method called as callback?

+0

請建議任何鏈接 –

相關問題