Я пытаюсь создать список, полный кнопок, и если вы нажмете кнопку, он отправит информацию, которая была на этой кнопке, на следующую страницу. Мне удалось получить правильное представление списка, а кнопки могут перейти на следующую страницу, но мне не удаётся решить, как использовать rowID для определения того, какая кнопка была нажата. У меня есть следующий код, но по какой-то причине rowID дает ошибку undefined, это не объект, когда он щелкнут, когда я изменяю rowID с номером (скажем 1), он отлично работает, любые идеи?React Native rowID, дающий ошибку undefined, не является объектом
спасибо
var woolworths = {
'title': "Woolworths",
"description":'"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."',
'img': require('../assets/woolworths.jpg')
};
var checkers = {
'title': "Checkers",
"description":'"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."',
'img': require('../assets/checkers.jpeg')
};
var picknpay = {
'title': "Pick 'n Pay",
"description":'"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."',
'img': require('../assets/picknpay.jpg')
};
var partners = [woolworths, checkers, picknpay];
class Partners extends React.Component{
constructor(props){
super(props)
this._renderRow = this._renderRow.bind(this);
this.gotoPartner = this.gotoPartner.bind(this);
this.ds= new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2})
this.state = {
dataSource: this.ds.cloneWithRows(this._partners()),
}
}
gotoPartner(rowID:number){
this.props.navigator.push({
title: partners[rowID].title,
component: Partner,
passProps: {partner:partners[0]},
backButtonTitle: 'Back',
});
};
_partners(){
var dataBlob = []
for (var ii = 0; ii < partners.length; ii++) {
dataBlob.push(partners[ii].title);
}
return dataBlob;
}
_renderRow(rowData, rowID){
return(
<View>
<TouchableHighlight
style={styles.button}
onPress={() => this.gotoPartner(rowID)}
underlayColor='transparent'>
<View style={styles.textimgholder}
>
<Text style={styles.buttonTitle}>{rowData}</Text>
<View style={styles.imgHolder}>
<Image source= {require('../assets/arrowIcon.png')}
style={styles.arrowIcon}/>
</View>
</View>
</TouchableHighlight>
<Separator />
</View>
)
}
render() {
return(
<ScrollView style={styles.mainContainer}>
<FullSep />
<ListView
dataSource={this.state.dataSource}
renderRow={this._renderRow}
/>
</ScrollView>
)
}
};
Большое вам спасибо, не верьте, что это была проблема, которую я так долго пытался выяснить. Извините за редактирование вопроса и ответив на другие ответы, до сих пор не видел этого ответа –
Отличный, рад, что он сработал! –