gpt4 book ai didi

javascript - 如何从 native react 中的 FlatList 中删除项目/索引?

转载 作者:数据小太阳 更新时间:2023-10-29 05:49:09 24 4
gpt4 key购买 nike

我有一个呈现为 View 的数据,遇到了一个关于如何删除被刷过的特定索引的问题

我按如下方式使用了 FlatList

render() {
this.leftOpenValue = Dimensions.get('window').width;
this.rightOpenValue = -Dimensions.get('window').width;

return (

<FlatList
data = {data}
keyExtractor = {data => data.id}
renderItem={ ({item}) => (

<View style={styles.container}>
<SwipeView
disableSwipeToRight = {false}
renderVisibleContent={() =>
<View>
<Text style={styles.text}> {item.title} </Text> // This repeats 9 times (9 Index)
</View>
}
renderRightView={() => (
<View style={{flex:1, justifyContent: 'flex-end', alignItems: 'center', backgroundColor: 'red'}}>

</View>
)}

leftOpenValue = {this.leftOpenValue}
rightOpenValue = {this.rightOpenValue}
onSwipedLeft={() => alert("deleted")}
swipeDuration = {300}
swipeToOpenPercent = {40}
disableSwipeToRight = {true}
/>
</View>

)}
/>
);

我已经使用Swipeview滑动(react-native-swipeview)删除flatlist中的索引

我有一个关于如何从 flatList 中删除项目的问题

最佳答案

一般模式是将唯一可识别的 id(键、索引等)传递给您的删除处理程序,并根据不等于该键的值过滤您的数据。这将返回一个没有该条目的新数组以存储在状态中。

deleteItemById = id => {
const filteredData = this.state.data.filter(item => item.id !== id);
this.setState({ data: filteredData });
}

render() {
...

return (
<FlatList
data={data} // Assuming this is `this.state.data`
keyExtractor={({item}) => item.id}
renderItem={({item}) => (
<View style={styles.container}>
<SwipeView
...
onSwipedLeft={() => this.deleteItemById(item.id)}
...
/>
</View>
)}
/>
);
}

使用柯里化(Currying)处理程序。这通过将回调设置为函数范围内包含 id 的事件处理程序来使用匿名回调。

deleteItemById = id => () => {
const filteredData = this.state.data.filter(item => item.id !== id);
this.setState({ data: filteredData });
}

render() {
...

return (
<FlatList
data={data} // Assuming this is `this.state.data`
keyExtractor={({item}) => item.id}
renderItem={({item}) => (
<View style={styles.container}>
<SwipeView
...
onSwipedLeft={this.deleteItemById(item.id)}
...
/>
</View>
)}
/>
);
}

关于javascript - 如何从 native react 中的 FlatList 中删除项目/索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53855424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com