diff --git a/src/forge/Head/NoticeContent.jsx b/src/forge/Head/NoticeContent.jsx index 39546707..d29dfb72 100644 --- a/src/forge/Head/NoticeContent.jsx +++ b/src/forge/Head/NoticeContent.jsx @@ -23,6 +23,9 @@ function NoticeContent({ visible, showNotification, resetUserInfo, current_user: const [atPage, setAtPage] = useState(0); const [atUnreadList, setAtUnreadList] = useState([]);//未读@我列表 + //记录用户点击的消息 + const [clickItem, setClickItem] = useState(undefined); + useEffect(() => { resetUserInfo(); }, [noticeUnreadCount,atUnreadCount]); @@ -150,23 +153,26 @@ function NoticeContent({ visible, showNotification, resetUserInfo, current_user: function changeReadMark(item) { - if (item.type === "notification") { - let list = noticeUnreadList.slice(); - let index = noticeUnreadList.indexOf(item); - list[index].status = 2; - setNoticeUnreadList(list); - if (noticeUnreadCount > 0) { - setNoticeUnreadCount(noticeUnreadCount - 1); - } - } else if (item.type === "atme") { - let list = atUnreadList.slice(); - let index = atUnreadList.indexOf(item); - list[index].status = 2; - setAtUnreadList(list); - if (atUnreadCount > 0) { - setAtUnreadCount(atUnreadCount - 1); + if (!clickItem || clickItem.id !== item.id){ + if (item.type === "notification") { + let list = noticeUnreadList.slice(); + let index = noticeUnreadList.indexOf(item); + if (list[index].status === 1 && noticeUnreadCount > 0) { + setNoticeUnreadCount(noticeUnreadCount - 1); + } + list[index].status = 2; + setNoticeUnreadList(list); + } else if (item.type === "atme") { + let list = atUnreadList.slice(); + let index = atUnreadList.indexOf(item); + if (list[index].status === 1 && atUnreadCount > 0) { + setAtUnreadCount(atUnreadCount - 1); + } + list[index].status = 2; + setAtUnreadList(list); } } + setClickItem(item); } return ( @@ -219,7 +225,7 @@ function NoticeContent({ visible, showNotification, resetUserInfo, current_user: {atUnreadList.map(item => { return (