Wie binde ich eine Funktion außerhalb des Gültigkeitsbereichs in React Native? Ich erhalte die Fehler:Nicht definiert ist kein Objekt, das dies auswertet.state/this.props
undefined is not an object evaluating this.state
&
undefined is not an object evaluating this.props
ich die Render-Methode bin mit renderGPSDataFromServer()
hervorzurufen, wenn die Daten geladen wurde. Das Problem ist, ich versuche, _buttonPress()
und calcRow()
innerhalb von renderGPSDataFromServer()
zu verwenden, aber ich bekomme diese Fehler.
Ich habe
hinzugefügtconstructor(props) {
super(props);
this._buttonPress = this._buttonPress.bind(this);
this.calcRow = this.calcRow.bind(this);
meinen Konstruktor und ich habe _buttonPress() {
zu _buttonPress =() => {
und immer noch nichts geändert.
Ich glaube, ich verstehe das Problem, aber ich weiß nicht, wie es zu beheben:
renderLoadingView() {
return (
<View style={[styles.cardContainer, styles.loading]}>
<Text style={styles.restData}>
Loading ...
</Text>
</View>
)
}
_buttonPress =() => {
this.props.navigator.push({
id: 'Main'
})
}
renderGPSDataFromServer =() => {
const {loaded} = this.state;
const {state} = this.state;
return this.state.dataArr.map(function(data, i){
return(
<View style={[styles.cardContainer, styles.modularBorder, styles.basePadding]} key={i}>
<View style={styles.cardContentLeft}>
<TouchableHighlight style={styles.button}
onPress={this._buttonPress().bind(this)}>
<Text style={styles.restData}>View Video</Text>
</TouchableHighlight>
</View>
<View style={styles.cardContentRight}>
<Text style={styles.restData}>{i}</Text>
<View style={styles.gpsDataContainer}>
<Text style={styles.gpsData}>
{Number(data.lat).toFixed(2)}</Text>
<Text style={styles.gpsData}>{Number(data.long).toFixed(2)}</Text>
</View>
<Text style={styles.gpsData}>
{this.calcRow(55,55).bind(this)}
</Text>
</View>
</View>
);
});
}
render =()=> {
if (!this.state.loaded) {
return this.renderLoadingView();
}
return(
<View>
{this.renderGPSDataFromServer()}
</View>
)
}};
Wie gehe ich über diese Festsetzung und in diesem Fall, was das Problem ist?
Ich denke auch, dass Sie Pinedas Rat befolgen sollten, wie man mit Requisiten umgeht, die ich auf meiner Antwort völlig übersehen habe. – martinarroyo