【发布时间】:2019-06-06 16:04:23
【问题描述】:
我从搜索结果返回的数据有列:enTitle、Image、url、enDescription、HasLandingPage、AddInfo。
我想通过 AddInfo 过滤搜索结果以显示在不同的列表中。以后如果能加个按钮就更好了。
渲染数据:
const ListArticle = (props) =>{
return (
<div className="card">
<div className="search-img-lft">
<a href={props.link} target="_blank">
<img src={props.image} alt="" />
</a>
</div>
<div className="search-imgcont-rgt">
<a href={props.link} target="_blank">
<h3>
{props.title}
{props.kind} // just to see if kind works
</h3>
<p>{props.desc}</p>
</a>
<a href={props.link} target="_blank" className="default-link">{props.link}</a>
</div>
</div>
);
}
列表类:(忽略它们用于分页的 i、brac 和 lim)
class List extends React.Component {
render(){
const liArt =[];
const searchText = this.props.searchText.toLowerCase().replace(/[^a-z0-9]/g, '');
var i = 0;
const brac = this.props.start;
const lim = brac + this.props.qtyPerPage;
//the filter below works for resources but I want all to be filtered and show in the list in previous code snippet
this.props.list.filter(u=>u.AddInfo == "resource").map((article)=>{
var artText = (article.enTitle + " " + article.URL + " " + article.enDescription + " " + article.AddInfo).toLowerCase().replace(/[^a-z0-9]/g, '');
if(artText.indexOf(searchText)===-1){
return;
}
i++;
if(brac<i && i<lim){
liArt.push(
<ListArticle key={article.Image+article.URL}
title={article.enTitle}
image={article.Image+"?h=100&mode=crop&scale=down"}
link={JSON.stringify(article.HasLandingPage).toUpperCase()=="TRUE" ? "/en/"+article.URL : "/" + article.URL}
desc={article.enDescription}
kind={article.AddInfo.includes("SKU") ? " Product" : (article.AddInfo.includes("resource") ? " Resource" : " Page")} />
);//push
} //limit check
});//map
return (
<div className="search-page-listbox">
{liArt}
</div>
);
}
}
【问题讨论】:
-
您能否解释一下您遇到了什么错误或问题是什么?或者以某种方式将您的代码放入演示中,以便我们查看问题?
-
没有错误我只是不知道如何过滤结果。在第二个 sn-p 中,我使用一个条件(AddInfo == "resource")进行过滤,它可以工作。如果我删除该过滤器,它将显示所有搜索结果。但我希望根据 AddInfo 分离数据。