javascript - 在 FlatList React Native 中过滤数据
问题描述
我有一个带有数据的 FlatList,它应该响应两个组件的变化:搜索栏和类别选择器。我一次只能使用其中一个,并且只使用搜索栏或类别选择器进行过滤。
如何过滤数据,例如,当我选择一个类别并开始输入名称时(例如:选择“massage”并输入“John” - 应该什么都不显示,选择“massage”并输入“j” - 应该显示 Jason)
成分:
<View style={styles.container}>
<DropDownPicker
placeholder="All"
defaultValue={categories[0].label}
items={filteredCategories}
onChangeItem={(item) => {
setFilter(item.value);
setCategories(item.value);
}}
/>
<TextInput
autoCapitalize="none"
autoCorrect={false}
clearTextOnFocus={true}
style={styles here}
onChangeText={(text) => {
setSearchText(text);
}}
value={searchText}
/>
<FlatList
data={filteredData}
renderItem={renderItem}
keyExtractor={(item) => item.id}
/>
</View>
状态和过滤器:
const [filter, setFilter] = useState("all");
const [categories, setCategories] = useState("all");
const [searchText, setSearchText] = useState();
//inital data
const data = [
{
id: "1",
category: "massage",
title: "Jason Bourne",
},
{
id: "2",
category: "massage",
title: "Will Mohaw",
},
{
id: "3",
category: "stylist",
title: "John Smith",
},
];
//initial categories
const categoryData = [
{
label: "All",
value: "all",
},
{
label: "Massage",
value: "massage",
},
{
label: "Stylist",
value: "stylist",
},
];
//every single specialist
const Item = ({ title }) => (
<View style={styles.item}>
<Text style={styles.title}>{title}</Text>
</View>
);
//rendering each specialist
const renderItem = ({ item }) => <Item title={item.title} />;
//sorting either by search or by category, below
const filteredData = searchText
? data.filter((x) =>
x.title.toLowerCase().includes(searchText.toLowerCase())
)
: data;
//filter data in flatlist by category
/*const filteredData =
filter != "all"
? data.filter((x) =>
x.category.toLowerCase().includes(filter.toLowerCase())
)
: data;*/
解决方案
推荐阅读
- javascript - 单击按钮时将不同文本区域的文本复制到剪贴板
- java - 如何在 RestController 类中模拟私有变量
- java - jdk 和 jre 的类路径问题?
- sms - 同时使用 SMS 和 Internet 的问题 W Telit UL865 NAD
- python - 不断收到错误“输入包含 NaN、无穷大或对于 dtype('float32') 来说太大的值。”
- bevy - 如何在bevy中获取子实体的绝对位置?
- elasticsearch - 嵌套字段上的 Elasticsearch 复合聚合查询
- azure-active-directory - Azure AD B2C 会话超时无效
- pandas - 熊猫与 numpy 不兼容
- visual-studio - Ctrl+Shift+右箭头在 Visual Studio 2019 中不起作用