【问题标题】:Use only one useState hook in (filtered) Search list在(过滤的)搜索列表中仅使用一个 useState 挂钩
【发布时间】:2021-02-09 16:21:16
【问题描述】:

ArticlePage.js 中,在我当前的设置here 中,我使用多个useState() 挂钩来呈现和过滤我的帖子列表:

const [posts, setPosts] = useState([]);
const [filteredPosts, setFilteredPosts] = useState([]);

我想知道,重构和优化这段代码,我是否也只有(而不是上面两个)?:

const [filteredPosts, setFilteredPosts] = useState([]);

我只希望组件重新渲染:

  • 如果帖子数量发生变化
  • 如果在搜索输入中键入的值发生变化

我认为我的设置没问题,但我想知道我是否可以改进它?

【问题讨论】:

    标签: reactjs filter use-state


    【解决方案1】:

    我会替换

    const [filteredPosts, setFilteredPosts] = useState([]);
    

    const filteredPosts = useMemo(
        () => posts.filter((post) => post.title.toLowerCase().includes(search.toLowerCase())),
        [search, posts]
    );
    

    并删除

      useEffect(() => {
        setFilteredPosts(
          posts.filter((post) => {
            return post.title.toLowerCase().includes(search.toLowerCase());
          })
        );
      }, [search, posts]);
    

    【讨论】:

      猜你喜欢
      • 2021-08-18
      • 1970-01-01
      • 2022-12-04
      • 2015-12-02
      • 2019-05-12
      • 2020-04-16
      • 2019-02-01
      • 2021-11-25
      • 1970-01-01
      相关资源
      最近更新 更多