reactjs - 从多选器(ReactJS、TypeScript)中删除项目时,搜索结果未显示默认列表
问题描述
为什么当我选择流派过滤器然后从列表中删除所有流派时过滤器没有显示正确的结果。当我将第一个流派添加到过滤器时,问题就开始了,它不会自动过滤掉它们,只有当我添加了第二个流派时。我注意到的另一个问题是从过滤器列表中删除流派时的事实。结果不会根据选择的流派进行更新。
例如,我首先添加流行音乐,然后添加摇滚(在流派过滤器中,数组将是['pop', 'rock']并且仅在将第二种流派添加到数组时才会显示一些特定结果。此外,当删除所有流派时...... .它仍然没有显示所有内容(默认为500个对象的数组。我怎样才能重写函数以便正确解决这个问题。事实上,当一些过滤器被填充或应用时,它应该立即更新搜索结果onChange。
为了您更好地理解,我建议您单击下面的链接以查看大图。
import React from "react";
import { connect, ConnectedProps } from "react-redux";
interface Genre {
id: number;
name: string;
}
interface Video {
id: number;
artist: string;
title: string;
release_year: number;
genre_id: number;
image_url: string;
}
interface IProps {
genreList?: Genre[];
videoList?: Video[];
selectedGenres?: any;
inputValue?: string;
selectedYear?: number;
}
export const SearchResult: React.FC<SearchResultProps | IProps> = ({videoList, inputValue, selectedGenres, selectedYear}) => {
const filterRequirements = (data: { release_year: any; artist: any; title: any; genre_id: any; }) => {
return (selectedYear == null || selectedYear == 0 || data.release_year == selectedYear)
&& (inputValue.trim() == '' || data.artist.toLowerCase().includes(inputValue.toLowerCase()) || data.title.toString().toLowerCase().includes(inputValue.toLowerCase()))
&& (selectedGenres.length == 0 || selectedGenres.includes(data.genre_id));
}
const filteredVideos = videoList.filter(filterRequirements);
return (
<div>{filteredVideos.map((item: { title: string; }, index: number) => (
<div key={index}>{item.title}</div>
))}</div>
)
}
const mapStateToProps = (state: any) => {
return {
inputValue: state.videoList.inputValue || "",
genreList: state.videoList.genreList || [],
videoList: state.videoList.videoList || [],
selectedGenres: state.videoList.getGenresId || [],
selectedYear: state.videoList.selectedYear || []
};
}
const connector = connect(mapStateToProps);
type SearchResultProps = ConnectedProps<typeof connector>;
export default connector(SearchResult);
解决方案
推荐阅读
- redux - 如何在操作文件中订阅 redux 存储中的更改
- sql - 数百万行的 Enterprise Postgresql 查询性能
- amazon-product-api - Amazon API——如何获取特定用户的所有评论
- swift - 自定义 UIView 类中的 Swift 设置变量
- android - 我如何禁用特定日期
- xml - SSRS 动态 XML 数据源连接字符串可能吗?
- c# - 如何在 ASP.Net 核心 2.1 Web API 中将控制器视图作为默认页面?
- amazon-cloudformation - CloudFormation - SAM 模板的结构无效。“资源”部分是必需的
- excel - 如何根据上一年的值在 Excel 中使用 MDX 使用加权分配?(在 SSAS 中写回)
- html - 如何删除引导程序 4 按钮单击效果