Кажется, что я нажимаю кнопки вызова. Независимо от того, какой метод я пытаюсь получить разные неопределенные ошибки.React-Native ListView onPress - undefined не является объектом
Я запускаю реакцию native 0.24 и в настоящий момент кодирую только для Android-устройства.
смотрите код ниже:
class ListPage extends Component {
constructor(props){
super(props);
this.nav = props.nav;
this.route = props.route;
this.ds = new ListView.DataSource({
rowHasChanged: (row1, row2) => row1 !== row2,
});
this.state = ({
visible: false,
dataSource: this.ds.cloneWithRows(props.fullList),
});
}
goToPage(name){
this.nav.push({ name: name });
}
loadModal() {
this.setState({ visible: true });
}
list(row){
return (
<View style={styles.box}>
<TouchableNativeFeedback underlayColor="#FFF"
onPress={this.goToPage.bind(this,'ShowRow')}>
<View>
...ShowRow Button
</View>
</TouchableNativeFeedback>
<TouchableNativeFeedback
onPress={this.loadModal.bind(this)} >
<View style={styles.button}>
...Modal Button
</View>
</TouchableNativeFeedback>
</View>
);
}
render(){
return (
<View style={styles.container}>
<Modal visible={this.state.visible}
onRequestClose={() => {this.setState({visible: false}) }} >
<View>
<Text>I am a Modal!</Text>
</View>
</Modal>
<ListView
dataSource={this.state.dataSource}
renderRow={this.list} />
</View>
);
}
}
Всякий раз, когда я нажимаю любую кнопку, я получаю не определено, не является ошибкой объектом для обоих this.goToPage.bind и this.loadModal.bind.
если я попробовать это:
render() { //or inside list(row) function
goToPage = function(name){
this.nav.push etc etc
}
loadModal = function() { setState etc... }
return (
...render stuff
)
}
он теперь говорит, не определено, не является объектом для обоих this.nav и this.setState
, но если я это сделать:
constructor() {
...
goToPage = function(name){
props.nav.push(...);
}
}
он работает ..... но я знаю, что это не правильный подход, и я не могу setState для модального. Почему он не работает с первым методом? Большое спасибо.