Как связать функцию за пределами области действия в React Native? Я получаю ошибки:Undefined не объект, оценивающий this.state/this.props
undefined is not an object evaluating this.state
&
undefined is not an object evaluating this.props
Я использую метод визуализации, чтобы вызвать renderGPSDataFromServer()
, когда данные были загружены. Проблема в том, что я пытаюсь использовать _buttonPress()
и calcRow()
внутри renderGPSDataFromServer()
, но я получаю эти ошибки.
Я добавил
constructor(props) {
super(props);
this._buttonPress = this._buttonPress.bind(this);
this.calcRow = this.calcRow.bind(this);
к моему конструктору, и я изменил _buttonPress() {
к _buttonPress =() => {
и до сих пор ничего.
Я думаю, я понимаю эту проблему, но я не знаю, как это исправить:
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>
)
}};
Как я могу идти о фиксации этого и в этом случае то, что проблема?
Я также думаю, что вы должны следовать совету Пинеды о том, как бороться с реквизитом, я полностью игнорировал это в своем ответе. – martinarroyo