我正在尝试在react native中检索FlatList上被单击元素的索引。 正如文档所述,我正在将索引传递给renderItem属性。我的代码如下:
/**
* Goes to the show view of a container
* @param {*} index
*/
showContainer = (index) => {
console.log(index);
}
render() {
return (
<DefaultScrollView style={styles.container}>
<FlatList
data={this.props.containers}
renderItem={(data, index) => (
<ListItem
containerStyle={{borderBottomWidth: 1, borderBottomColor: "#000"}}
key={data.item.id}
leftAvatar={Image}
onPress={() => {this.showContainer(index)}}
rightIcon={{ name: "ios-eye", type: "ionicon" }}
subtitle={
`${data.item.dummy === true? 'Por favor configura tu dispositivo' : 'Contenido actual: '}`
}
subtitleStyle={(data.item.dummy == true)? [styles.configurationText, styles.subtitule] : styles.subtitule}
title={data.item.name}
titleStyle={styles.title}
/>
)}/>
</DefaultScrollView>
);
}
它唯一有效的方法是将数字作为索引传递,例如:
renderItem={(data, index = 0)
,但是如何传递索引变量以始终具有正确的索引?
预先感谢
答案 0 :(得分:0)
只需用data, index
包装{}
并将每个data
更改为item
,
renderItem={({item, index}) => ( ....
....
key={item.item.id} // like this every where
答案 1 :(得分:0)
代码中的问题是:
您的代码:
renderItem={(data, index) => (
正确的一个:
renderItem={({ item, index }) => (
您可以更新renderItem,它将解决您的问题。
renderItem={({ item, index }) => (
<ListItem
containerStyle={{borderBottomWidth: 1, borderBottomColor: "#000"}}
key={data.item.id}
leftAvatar={Image}
onPress={() => {this.showContainer(index)}}
rightIcon={{ name: "ios-eye", type: "ionicon" }}
subtitle={
`${data.item.dummy === true? 'Por favor configura tu dispositivo' : 'Contenido actual: '}`
}
subtitleStyle={(data.item.dummy == true)? [styles.configurationText, styles.subtitule] : styles.subtitule}
title={data.item.name}
titleStyle={styles.title}
/>
)}
答案 2 :(得分:0)
在将数据传递到renderItem
之前,您需要分解数据。
因此更改:
renderItem={(data, index) => ( ...
收件人:
renderItem={({item, index}) => (...
然后,您可以使用item.id
访问数据。
简化的工作演示: