Я нашел здесь тему с той же проблемой, но решения не работают для меня.
Так что у меня есть ListView на моем ScanTicketPage.js.Отлично работает ListView, а также функция onPress для элемента ListView, который находится в функции renderRow.
Но моя проблема в том, что я не могу перейти к другому компоненту, который называется QrCode.js.Дело в том, что я хочу нажать на элемент списка и открыть сканер QrCode.
Может быть, важно упомянуть, что я использую TabNavigator, который привязан в App.js, который также отлично работает.
Все, что я могу видеть, это предупреждение с «нажатие» итогда ничего не происходит.Не ошибка, без предупреждения.
import React, { Component } from 'react';
import {
StyleSheet,
Text,
View,
ListView,
TextInput,
Button,
AsyncStorage,
Keyboard,
TouchableHighlight,
TouchableOpacity ,
AppRegistry
} from 'react-native';
import{createStackNavigator} from 'react-navigation';
import QrCode from '../components/QrCode';
class ScanTicketPage extends Component {
static navigationOptions = {
title: 'Scanner List'
};
constructor (props){
super(props);
const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
this.state={
activatedScanners:'',
dataListSource:ds
}
this.goToQrCodeScreen = this.goToQrCodeScreen.bind(this);
this.renderRow = this.renderRow.bind(this);
}
...
goToQrCodeScreen=(scanner)=>{
alert('press');
this.props.navigation.navigate('QrCode',{
scannerName: scanner.scannerName,
scannerValidityEnd: scanner.scannerValidityEnd,
scannerId: scanner.scannerId,
dataMacroId: scanner.dataMacroId,
hash:scanner.hash,
requestKey: scanner.requestKey,
})
}
renderRow(scanner, sectionId, rowId, highlightRow){
return(
<View >
<TouchableOpacity
onPress={()=>this.goToQrCodeScreen(scanner)}>
<Text style={styles.listitem} >{scanner.scannerName} (gültig bis {scanner.scannerValidityEnd})</Text>
</TouchableOpacity>
</View>
)
}
....
render(){
return(
<View style={styles.viewContent}>
<Text> Bitte wählen Sie einen Scanner aus:</Text>
<Text>{this.state.activatedScanners}</Text>
<ListView
dataSource={this.state.dataListSource}
renderRow={this.renderRow}
/>
</View>
);
}
const StackNavigation = createStackNavigator(
{
ScanTicketPage:ScanTicketPage ,
QrCode:QrCode
},
{
initialRouteName: 'ScanTicketPage',
}
);
AppRegistry.registerComponent('StackNavigation',()=> StackNavigation);