我相信这是一个菜鸟问题,但我发现这个问题的例子搞砸了我到目前为止的代码。
在以下函数中,value
是我在搜索栏中输入内容的结果。
this.setState({articles: !this.state.input
? false
: this.state.articles.filter(
(article) => {
return article.title.toLowerCase().indexOf(this.state.input.toLowerCase()) !== -1;
})
});
此代码可以正常过滤,但问题是,当我从搜索栏中删除所有内容时,它不会重置过滤器结果,我发现自己有一个空数组,我必须重新加载页面把一切都归还。
我试图确保this.state.input
不是空的,但到目前为止还没有工作
我该如何解决这个问题?
更新:我用我的尝试更新了我的问题
提前谢谢
答案 0 :(得分:2)
您获得的输入值可能为null或未定义。你可以添加一个条件,在函数中它将检查值是null / undefined还是空字符串它将只返回所有文章。
此外,您将所有文章存储在this.state.article
中,然后在过滤后使用过滤的文章设置相同的状态。下次过滤时,它将仅过滤过滤的文章。因此,您需要将所有文章存储在某处,然后具有filteredArticles
状态。