首页 > 解决方案 > useEffect 挂钩上的多个过滤器

问题描述

useEffect(() => {
if (status || group) {
  setFilteredProjects(
    projects.filter((project) => {
      if (group !== "" && status !== "") {
        return (
          project.status === status && project.workgroup.name === group
        );
      } else {
        return (
          project.status === status || project.workgroup.name === group
        );
      }
    })
  );
} else {
  setFilteredProjects(projects);
}
}, [status, group, projects]);

这段代码目前正在运行,但我觉得有一种更优雅的编写方式。

标签: javascriptreactjsreact-hooks

解决方案


你可以做这样的事情

const filteredProjects = projects.filter((project) => {
      return group !== "" && status !== "" 
          ? project.status === status && project.workgroup.name === group
          : project.status === status || project.workgroup.name === group;
    });

setFilteredProjects(filteredProjects);

推荐阅读