P粉6378669312023-08-18 14:28:26
创建一个状态来保存搜索查询,并创建另一个状态来存储过滤后的数据:
const [searchQuery, setSearchQuery] = useState(''); const [filteredCustomers, setFilteredCustomers] = useState(customers); // 初始化为完整列表
现在添加这个函数。首先更新searchQuery
状态,然后根据给定的text
参数进行过滤,并将结果设置为filteredCustomers
状态。
const handleSearchInputChange = (text) => { setSearchQuery(text); const filtered = customers.filter( (customer) => customer.customer.toLowerCase().includes(text.toLowerCase()) || customer.address.toLowerCase().includes(text.toLowerCase()) || customer.mobileno.includes(text) || customer.plateno.includes(text) ); setFilteredCustomers(filtered); };
每次在搜索TextInput
中输入时都要执行这个逻辑。
<TextInput placeholder="按客户搜索..." onChangeText={handleSearchInputChange} value={searchQuery} />
最后,只需通过filtredCustomers
而不是displayedCustomers
进行映射:
{filteredCustomers.map((customer, index) => { return ( <TouchableOpacity key={index} > // .... </TouchableOpacity> ) })