当页面第一次呈现时它显示了整个列表,然后它检查并删除了我订阅的那些

when the page first renders it shows the whole list, then it checks and deletes the ones I subscribed to

我对 useMemo 有反应。

  const [cardlist, setCardList] = useState([]);
  const [subs, setSubs] = useState([]);

  useEffect(() => {
    handleCardList(); // for rendering cards on page first time 
  }, []);
  

  const uniqCard = useMemo(() => _.uniqBy(cardList, '_id'), [cardList]); // precaution for duplicate data

  const filteredCard = useMemo(() => uniqCard.filter((cardList) => !subs.includes(cardList._id)), [uniqCard, subs]); // i want to see cards which is i dont following, so i am filtering again card with subs(array of strings) 

我的问题是,当我刷新页面时,所有列表都出现了,然后几秒钟我的功能,删除了后面的卡片。但我不想要那个。 我想在刷新或打开页面时直接列出我不关注的卡片。 你能帮忙吗? 非常感谢。

如果 subs 数组使用异步数据,subs 的初始值为空数组。 filteredCard 是按原样计算的,没有过滤器(!subs.includes returns true),因此您拥有不需要的未过滤数据。您可以保持 loading 状态并等待 subs 以便您可以正确过滤。另外,我认为您不需要 uniqCard 备忘录,因为它只使用 loadsh。您可以合并这两个备忘录。