Arrays 无法对显示的筛选列表作出反应
我正在构建一个食物列表应用程序,我一直在显示过滤后的部分 我有一份每道菜的菜品和配料清单。配料是食物列表数组中的一个数组。换句话说,这些成分是一个嵌套数组 所以我想做的是创建一个搜索栏。当你输入一种配料时,它会在搜索栏中显示一个含有与配料匹配的配料的菜品列表。例如,如果你输入意大利面,你会得到一个过滤过的可能菜肴列表,其中包括意大利面成分。因此,当用户在搜索栏中键入一种配料时,用户应该会看到在配料数组中包含该配料的菜肴列表 这是我的食物清单Arrays 无法对显示的筛选列表作出反应,arrays,reactjs,search,Arrays,Reactjs,Search,我正在构建一个食物列表应用程序,我一直在显示过滤后的部分 我有一份每道菜的菜品和配料清单。配料是食物列表数组中的一个数组。换句话说,这些成分是一个嵌套数组 所以我想做的是创建一个搜索栏。当你输入一种配料时,它会在搜索栏中显示一个含有与配料匹配的配料的菜品列表。例如,如果你输入意大利面,你会得到一个过滤过的可能菜肴列表,其中包括意大利面成分。因此,当用户在搜索栏中键入一种配料时,用户应该会看到在配料数组中包含该配料的菜肴列表 这是我的食物清单 [ { "food":
[
{
"food": "Lox and Bagel",
"ingredients": ["lox", "bagel", "cream cheese"]
},
{
"food": "Sushi",
"ingredients": ["rice", "salmon"]
},
{
"food": "Spaghetti",
"ingredients": ["pasta", "tomato sauce"]
}
]
这是显示食物列表的函数。但是,我无法让它显示列表。我想我可能在这个函数的某个地方搞砸了:
showFood = () =>{
this.props.filtered.map((eachFood, index) => {
const lc = eachFood.ingredients.map(ingredient => ingredient.toLowerCase());
const filter = this.state.searchInput.toLowerCase();
if (eachFood.lc.includes(filter) === -1) {
return(
<DishBox
key={index}
dish={eachFood.food}
ingredients={eachFood.ingredients}
clickToDelete={this.deleteDish.bind(index)}
/>
);
}
});
}
showFood=()=>{
this.props.filtered.map((每个食物,索引)=>{
const lc=eachFood.components.map(component=>component.toLowerCase());
const filter=this.state.searchInput.toLowerCase();
if(每个食品的lc.包括(过滤器)=-1){
返回(
);
}
});
}
这里是我的链接。您可以按如下所选的配料过滤菜肴
让我们选择greedient=“意大利面”;
让盘子=[
{
“食物”:“Lox和百吉饼”,
“配料”:[“lox”、“百吉饼”、“奶油奶酪”]
},
{
“食物”:“寿司”,
“配料”:[“大米”、“鲑鱼”]
},
{
“食物”:“意大利面”,
“配料”:[“意大利面”、“番茄酱”]
}
]
让filteredishs=碟子。过滤器(d=>d.配料。包括(selectedGredient))
console.log(过滤器添加)代码>但我需要编辑代码以在键入配料之前和之后显示食物列表…因为盘
组件从它那里接收它需要的所有数据父级不需要在状态下添加该道具。您可以使用上面的代码,我在您的代码沙盒上做了一些更改,我提供的更改是AspectedTanks!它现在可以工作了,我甚至对它进行了更多的编辑,以便将配料转换成小写,以防用户键入小写,而有些配料是大写的