【发布时间】:2021-11-26 22:03:06
【问题描述】:
我正在尝试在具有属性Id 的一组对象中应用过滤器,以获取以输入文本开头的项目列表。
我在数组中只有两个元素,但是 如果我得到相同的两个元素(呈现为列表)。
我需要做什么来修复函数SearchFilter中的过滤器逻辑?
import React, { useEffect, useState } from "react"
import {useSelector} from 'react-redux'
import {View, Item, Text, Icon, Input, List, ListItem, Left, Thumbnail, Spinner} from 'native-base'
const SearchModal =(props:any)=>{
const sessionsCata = useSelector((state)=> state.sessionsCata.sessions)
const [itemsFiltered, setItemsFiltered] = useState([])
const [showSpinner, setShowSpinner] =useState(false)
//filter the array objects
async function SearchFilter(params:string) {
setShowSpinner(true)
if(sessionsCata && sessionsCata.length>0){
let result = await sessionsCata.filter(async x=> x.Id.startsWith(params) )
if(result)
setItemsFiltered(result)
}
await Sleep(500) //function with Promise-setTimeout
setShowSpinner(false)
}
return(
<View style={StylesSearch.containerBar} >
<Item rounded style={StylesSearch.searchBar}>
<Input placeholder='Id...' onChangeText={async (text) => await SearchFilter(text)} />
</Item>
</View>
<View>
{ showSpinner ? <Spinner color='grey'/> :
itemsFiltered && itemsFiltered.length>0 ? (
<List>
{
itemsFiltered.map(item=>(
<ListItem avatar key={item.id}>
<Body>
<Text>{item.id}</Text>
</Body>
</ListItem>
))
}
</List>
): <Text>Not items filtered...</Text>
}
</View>
)
}
【问题讨论】:
-
我不明白这个
I have only two elements in the array but ever I get the same two elements (render as a list)是什么意思。你的意思是你永远不会得到这两个元素? -
当我在输入中输入任何值时,渲染所有的项目
标签: javascript react-native asynchronous filter