当页面第一次呈现时它显示了整个列表,然后它检查并删除了我订阅的那些
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。您可以合并这两个备忘录。
我对 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。您可以合并这两个备忘录。