Reactjs 如何在React with filter按钮中过滤搜索结果?

Reactjs 如何在React with filter按钮中过滤搜索结果?,reactjs,firebase,google-cloud-firestore,Reactjs,Firebase,Google Cloud Firestore,如何使用react和firebase筛选搜索结果? 我有这个代码工作良好,每次我键入一封信,它将显示我的firebase数据搜索结果 import React,{Component}来自'React'; 从'react router dom'导入{Link}; 导入“/App.css”; 从“/firebase”导入firebase; 类应用程序扩展组件{ 建造师(道具){ 超级(道具); this.ref=firebase.firestore().collection('Products'

如何使用react和firebase筛选搜索结果?

我有这个代码工作良好,每次我键入一封信,它将显示我的firebase数据搜索结果

import React,{Component}来自'React';
从'react router dom'导入{Link};
导入“/App.css”;
从“/firebase”导入firebase;
类应用程序扩展组件{
建造师(道具){
超级(道具);
this.ref=firebase.firestore().collection('Products');
this.unsubscribe=null;
此.state={
过滤器:“”,
产品:[]
};
}
onCollectionUpdate=(querySnapshot)=>{
常数乘积=[];
querySnapshot.forEach((doc)=>{
const{title,status}=doc.data();
产品推送({
关键字:doc.id,
doc,//DocumentSnapshot
标题
地位
});
});
这是我的国家({
产品
});
}
handleChange=事件=>{
this.setState({filter:event.target.value});
};
componentDidMount(){
this.unsubscribe=this.ref.onSnapshot(this.onCollectionUpdate);
}
render(){
const{filter,Products}=this.state;
const lowercasedFilter=filter.toLowerCase();
const filteredData=Products.filter(项=>{
返回Object.key(item).some(key=>
项[key]==“string”&&item[key]的类型。toLowerCase()。包括(小写筛选器)
);
});
返回(
标题
地位
{filteredData.map(项=>(
{item.title}
{item.status}
))}
);
}
}

导出默认应用程序您可以基于集合的节点值执行数组搜索,如下所示

const thfilteredData = firebase_data.filter(({name}) => {
name = name.toLowerCase();
       return name.includes(value.toLowerCase());
   });
setFiltredRestaurants(thfilteredData);
我已使用该名称匹配子节点的名称值。您可以将它放在搜索输入的更改上,或者对于onClick,您只需创建一个函数并将选项值传递给match。在您的情况下,这可能如下所示

filterProducts = (status) => {
    const thfilteredData = Products.filter(({productstatus}) => productstatus === status);
    this.setState({
        filteredData: thfilteredData
    });
}

谢谢Tareq,但我在react中是一个非常初学者,并没有真正掌握react中的大部分命令。你能给我写完整的代码吗,这样我就可以知道替换什么了。“如果你愿意,我真的很感激。”RedFrog我用状态检查更新了我的答案。但这不利于复制和有害生物。因此,请使用更新后的第二个示例,并尝试将其与您的代码一起使用。@RedFrog还有一件事,请使用onChange事件为您的select获取所选选项值,并调用函数来更新您的筛选产品。@RedFrog能否将问题的解决方案作为答案发布并接受它?这项措施将提高未来用户寻找类似问题的可见性。提前谢谢!