本篇博客开始,我记录项目实训的资源共享功能的实现,前期已经搭建好了后台,并学习的前端技术。
评论功能
回答的类型
包括用户ID、问题的序号、优先级、发布时间等
export interface CommentType {
_id: string;
userId: string;
questionId: string;
content: string;
thumbNum: number;
priority: number;
reviewTime?: Date;
reviewerId?: string;
reviewStatus: number;
reviewMessage?: string;
_createTime: Date;
_updateTime: Date;
}
单个回答展示
(只有登录的人才可以点赞)
useEffect(() => {
const thumbCommentIds = currentUser.thumbCommentIds ?? [];
setIsThumb(thumbCommentIds.includes(comment._id));
}, [currentUser, comment._id]);
const doThumbUp = async (id: string) => {
if (!currentUser?._id) {
toLoginPage();
message.warning('登录后才能点赞哦');
return;
}
if (thumbLoading) {
return;
}
setThumbLoading(true);
const res = await thumbUpComment(id);
if (res === 1 || res === -1) {
comment.thumbNum = (comment.thumbNum ?? 0) + res;
const thumbCommentIds = currentUser.thumbCommentIds ?? [];
if (res > 0) {
thumbCommentIds.push(comment._id);
} else {
thumbCommentIds.splice(thumbCommentIds.indexOf(comment._id), 1);
}
const newCurrentUser = {
...currentUser, thumbCommentIds };
setInitialState({
...initialState, currentUser: newCurrentUser });