【发布时间】:2021-05-14 00:40:12
【问题描述】:
这个想法是获取用户在数据库中使用的卡片,并与屏幕上收听的所有卡片进行比较。基本上用户不应该看到他已经使用过的卡片。
const loadSaveInvestments = async (
_req: express.Request,
res: express.Response
) => {
const findSaveInvestments = await prisma.investmentSave.findMany({
select: {
investment_id: true,
},
});
if (!findSaveInvestments) throw new HttpException(400, SAVE_INVEST_MISSING);
res.send(findSaveInvestments);
};
所以,我将发送所有保存的投资卡。现在,在 React 中 - 我正在从服务中获取发送的数据(所有卡片和保存的卡片)
const fetchUserSaveInvestments = async () => {
const res = await axios.get(`${baseURL}/investments-save`);
return res;
};
const [cards, setCards] = useState([]);
const [saveCards, setSaveCards] = useState([]);
useEffect(() => {
setLoading(true);
investService.fetchUserSaveInvestments().then((res) => {
setSaveCards(res.data);
});
investService.fetchCards().then((res) => {
setCards(res.data.investments);
setLoading(false);
});
现在 - 主要部分。我只想在卡片的 id 不处于保存卡片状态时才映射卡片,所以我尝试过类似的方法.. 我已经标记了我有点卡住的点,我的意思是,我应该创建类似 double 的东西地图还是什么?如果我朝着正确的方向前进,我想知道。
<div className={classes.CardsContainer}>
<div className={classes.CardsSelector}>
{loading && <p> its loading </p>}
{!loading && (
<>
{cards
.filter(
(card) => card.id !== saveCards.?????.investments_id
)
.map((card) => (
<Card
{...card}
handleClick={() => handleChooseCard(card)}
/>
))}
</>
)}
</div>
提前致谢。
【问题讨论】:
-
除了
id过滤之外,您真的需要saveCards吗? -
您需要卡片还是已保存的卡片?或者只是想要用户当前没有保存的卡片列表。您可以在将它们设置为状态之前过滤它们。
标签: javascript reactjs axios