gpt4 book ai didi

javascript - 在 useEffect 中加载数据后,仅当计数大于 0 时才显示计数(在渲染中)

转载 作者:行者123 更新时间:2023-11-30 13:55:40 26 4
gpt4 key购买 nike

useEffect 中,notifications 从数据库中获取:

useEffect(() => {
if (props.loading != true) {
props.fetchNotifications(currentUserId, submissionId)
}
}, [])

在返回语句的某处,我有以下代码对通知列表应用过滤器并检查剩余列表的长度是否大于零。然后,如果是,我使用相同的过滤语句来计算这次要显示的计数。但是,我进行了两次计算,创建了冗余代码。我想知道在 React 中是否有解决这个问题的方法。

   props.notifications &&
<div className="col-sm-4">
<div className="mb-3">
<h5 className="text-primary bg-light pl-1 pt-2 pb-2">
<i className="fa fa-bell-o"></i> &nbsp;Notifications
<span className="badge badge-pill badge-primary small ml-2">
{
Object.keys(props.notifications)
.filter(function (id) {
return props.notifications[id].isDiscussionType == false &&
props.notifications[id].isRead == false
}).length > 0 &&
<span>{
Object.keys(props.notifications)
.filter(function (id) {
return props.notifications[id].isDiscussionType == false &&
props.notifications[id].isRead == false
}).length} new
</span>
}
</span>
</h5>
<NotificationList isDiscussionType={false} />
</div>

最佳答案

您可以将结果存储在常量中以仅执行一次filter 操作:

const notificationsLength = props.notifications ? Object.keys(props.notifications).filter(function (id) {
return props.notifications[id].isDiscussionType == false &&
props.notifications[id].isRead == false
}).length : 0

return (
<span className="badge badge-pill badge-primary small ml-2">
{

notificationsLength &&
<span>{notificationsLength} new</span>
}
</span>
)

关于javascript - 在 useEffect 中加载数据后,仅当计数大于 0 时才显示计数(在渲染中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57363971/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com