Javascript Useffect挂钩上的多个过滤器

Javascript Useffect挂钩上的多个过滤器,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,这段代码目前正在运行,但我觉得有一种更优雅的编写方式。您可以这样做 useEffect(() => { if (status || group) { setFilteredProjects( projects.filter((project) => { if (group !== "" && status !== "") { return ( project.statu

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

您可以这样做

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]);

在我看来很合理。您可以添加一两个快捷方式,比如只需检查
if(group&&status)
并使用
setFilteredProjects(projects)提前返回而不是嵌套缩进。你是对的,老实说,我认为在这个片段中真正困扰我的是if-else选择中的双返回。可以先将匹配项保存在变量中,然后使用条件运算符。还是很琐碎。
const filteredProjects = projects.filter((project) => {
      return group !== "" && status !== "" 
          ? project.status === status && project.workgroup.name === group
          : project.status === status || project.workgroup.name === group;
    });

setFilteredProjects(filteredProjects);