【发布时间】:2020-03-05 18:08:46
【问题描述】:
我试图通过单击每个项目来删除 FlatList 中的项目,但这对我不起作用,当我单击每个项目时没有任何反应并且我没有收到任何错误。 我该如何解决这个问题?
这是我的代码:(我删除了不必要的代码和样式)
const FoodList = () => {
const data= [
{ text: 'test' },
{ image: 'https://via.placeholder.com/200x100' },
{ text: 'test' },
{ text: 'test' },
{ text: 'test' },
{ text: 'test' },
{ text: 'test' },
{ text: 'test' },
{ text: 'test' },
]
let [itemState, setitemState] = useState(data);
return (
<View>
<FlatList
data={data}
keyExtractor={(item, index)=>index}
renderItem={({ item }) => (
<TouchableOpacity>
<View>
<Text>{item.text}</Text>
<Image source={{ uri: item.image}}
/>
</View>
<Icon
onPress={(index)=>setitemState(itemState=itemState.filter(item=>item.index!==index))} />
</TouchableOpacity>
)}
/>
</View>
)}
【问题讨论】:
-
item好像没有索引,所以item.index!==index用处不大。 -
那么解决办法是什么?
-
试试
setitemState(itemState => itemState.filter((item, itemIndex) => itemIndex !== index)) -
谢谢哥们,它有效,但是在点击 touchableopacity 后它会删除平面列表中的所有项目,我希望它只删除一项。
标签: javascript reactjs react-native react-hooks react-native-flatlist