gpt4 book ai didi

react-native - 如何在flatlist中多选项目 react 原生

转载 作者:行者123 更新时间:2023-12-03 15:55:39 25 4
gpt4 key购买 nike

如何多选并突出显示 react native flatlist 中的组件。我查了 doc .但这有点令人困惑,有人可以帮助我。我已经使用这种方法完成了单选。任何人都可以将其修改为多选。我将在这里提供小吃链接,我已经完成了 single select

import * as React from 'react';
import {
Text,
View,
StyleSheet,
FlatList,
TouchableOpacity,
} from 'react-native';
import Constants from 'expo-constants';

const Data = [
{
id: 1,
first_name: 'Sile',
},
{
id: 2,
first_name: 'Clementia',
},
{
id: 3,
first_name: 'Brita',
},
{
id: 4,
first_name: 'Duke',
},
{
id: 5,
first_name: 'Hedvig',
},
{
id: 6,
first_name: 'Paulie',
},
{
id: 7,
first_name: 'Munmro',
},
{
id: 8,
first_name: 'Dyanna',
},
{
id: 9,
first_name: 'Shanta',
},
{
id: 10,
first_name: 'Bambi',
},
];

// or any pure javascript modules available in npm
import { Card } from 'react-native-paper';

export default class App extends React.Component {
constructor(props) {
super(props);
this.state = {
selectedItem: null,
};
}

onPressHandler(id) {
this.setState({ selectedItem: id });
}

render() {
return (
<View>
<FlatList
extraData={this.state.selectedItem} //Must implemented
//horizontal={true}
data={Data}
keyExtractor={item => item.id.toString()}
showsHorizontalScrollIndicator={false}
renderItem={({ item }) => (
<TouchableOpacity onPress={() => this.onPressHandler(item.id)}>
<Card
style={
this.state.selectedItem === item.id
? {
padding: 10,
borderRadius: 5,
backgroundColor: '#000000',
}
: {
padding: 10,
borderRadius: 5,
backgroundColor: '#a1a1a1',
}
}>
<Text>{item.first_name}</Text>
</Card>
</TouchableOpacity>
)}
/>
</View>
);
}
}

const styles = StyleSheet.create({

});

这是样本数据

最佳答案

我进行了一些更改,并将您的平面列表设为多选。请访问此 link .
我进行了以下更改以使其成为多选:

  • 在 state 中添加虚拟数据并将其传递给 flatlist 的数据。
  • 在项目上按迭代数据和相应的项目集 item.selected=true .
  • 如果 item.selected==true 在 flatlist 的 renderItem 中然后显示选择否则删除选择。

  • 请检查并让我知道。

    关于react-native - 如何在flatlist中多选项目 react 原生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58796034/

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