如何在设置状态函数后再次搜索数据状态

时间:2018-03-18 11:21:51

标签: reactjs

大家好,我是初学者。我想在我的状态中搜索哪个对象数组,我为搜索编写了以下函数。第一次搜索时效果非常好。

但是,当我第二次尝试搜索它时,因为" tempdata"现在处于状态。有人可以帮我排序吗?

以下是我的代码,请先了解一下谢谢。

categorySearch(event){

    let tempdata=[];
    this.state.data.map((categoryObject,index) => {
        if(categoryObject.name.includes(event.target.value)){
            tempdata.push(categoryObject);
        }       
        this.setState({data:tempdata});  
    }); 

} 

1 个答案:

答案 0 :(得分:1)

我认为filter是一个更好的选择,而不是map

Filter返回一个新数组,其中包含传递内部条件的所有项 - 在您的情况下为String includes方法。

categorySearch(event){
    const filteredElements = 
       this.state.data.filter(categoryObject => categoryObject.name.includes(event.target.value));
    this.setState({filteredElements: filteredElements});  
} 

此外,我建议您不要修改原始数据,并使用状态filteredElements中的新密钥来存储与搜索查询匹配的所有搜索结果。这样,如果您想进行第二次搜索,所有原始数据仍然可用。

相关问题