Reagieren Nativen, NavigatorIOS, undefined ist kein Objekt (Evaluierung dieser.Requisiten.navigator.push')
Ich versuche zu verwenden NavigatorIOS
also in meinem index.ios.js
ich habe:
'use strict';
var React = require('react-native');
var Home = require('./App/Components/Home');
var {
AppRegistry,
StyleSheet,
NavigatorIOS
} = React;
var styles = StyleSheet.create({
container:{
flex: 1,
backgroundColor: '#111111'
}
});
class ExampleApp extends React.Component{
render() {
return (
<NavigatorIOS
style={styles.container}
initialRoute={{
title: 'example',
component: Home
}} />
);
}
};
AppRegistry.registerComponent('exampleapp', () => ExampleApp);
module.exports = ExampleApp;
Und dann in die Home.js
:
'use strict';
var React = require('react-native');
var Park = require('./Park');
var {
View,
StyleSheet,
Text,
TouchableHighlight
} = React;
var styles = StyleSheet.create({
...
});
class Home extends React.Component{
onPress() {
this.props.navigator.push({
title: 'Routed!',
component: Park
});
}
render() {
return (
<View style={styles.mainContainer}>
<Text> Testing React Native </Text>
<TouchableHighlight onPress={this.onPress} style={styles.button}>
<Text>Welcome to the NavigatorIOS . Press here!</Text>
</TouchableHighlight>
</View>
);
}
};
module.exports = Home;
Das Problem, das ich habe ist, dass wenn ich auf den TouchableHighlight
auslösen onPress()
ist, erhalte ich eine Fehlermeldung:
"Error: undefined is not an object (evaluating 'this.props.navigator')
So scheint es, dass es nicht finden können, die navigator
von Requisiten, aber den navigator übergeben werden sollen, durch NavigatorIOS
?
Scheint es auch, dass die Home
Komponente hat this.props.navigator
wie pro Bild:
Irgendwelche Tipps?
Fand ich ein paar links (die Leute haben genau das gleiche problem, aber das hat nicht geholfen):
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da Sie mit ES6 Sie zu binden, müssen 'diese'.
Beispiel:
onPress={this.onPress.bind(this)}
Edit: Noch eine weitere Möglichkeit, die ich habe mit vor kurzem ist die Verwendung von einem Pfeil Funktion auf die Funktion selbst, da Sie automatisch binden, die außerhalb
this
.NavigatorIOS
! Vielen Dank Dave!this
dann ja, müssen Sie entweder verwenden Sie Klassen-Eigenschaften (was ich hier gezeigt) oder verwenden Siebind
im Konstruktor.Können Sie binden Sie die Funktion in der
constructor
.Dann verwenden, wenn das Rendern ohne Bindung.
Dies hat den Vorteil, dass Sie mehrfach verwendet werden und auch clean up your render-Methode.