最近$set疯狂用, 记录一下
评论页面的每条留言的状态 和留言下每条留言的状态 强制刷新
数据的格式是
[ {demo1 content:'', id:1, replyList:[{ replyContent:'', replyId:0 },{ replyContent:'', replyId:1}] },demo2 content:'', id:1, replyList:[{ replyContent:'', replyId:0 },{ replyContent:'', replyId:1}] },...]
针对一级回复和二级回复的回复状态点击时每次只能显示一个回复框的封装
async closeDialog () { let self = this self.componentData.list.forEach((value, key) => { let obj = { ...value } obj.commentVisiable = false if ('commentReplyList' in obj) { obj.commentReplyList = obj.commentReplyList.map((item) => { let newList = { ...item } newList.replyVisiable = false return newList }) } self.$set(self.componentData.list, key, obj) }) },
一级
forAnswer (item, index) { let newVal = Object.assign(item) newVal.commentVisiable = !newVal.commentVisiable if ('commentReplyList' in newVal) { newVal.commentReplyList = newVal.commentReplyList.map((item) => { let newList = { ...item } newList.replyVisiable = false return newList }) } this.$set(this.componentData.list, index, newVal) }, // 一级回复 async answerAction (item, index, type) { let self = this if (type === 1) { await self.closeDialog() } this.forAnswer(item, index) },
二级回复
// 二级回复 forReply (reply, indexa, indexb) { let newVal = Object.assign(reply) newVal.replyVisiable = !newVal.replyVisiable let secondList = [...this.componentData.list[indexa].commentReplyList] secondList[indexb] = newVal let newComponentOjb = Object.assign(this.componentData.list[indexa]) newComponentOjb.commentReplyList = secondList this.$set(this.componentData.list, indexa, newComponentOjb) }, // 二级回复 async replyAction (reply, indexa, indexb, type) { let self = this if (type === 1) { await self.closeDialog() } this.forReply(reply, indexa, indexb) },
提交回复
//一级// 提交回复 answerSubmit (item, index) { this.forAnswer(item, index) var self = this let userCode = this.componentData.list[index].userCode // let commentId = this.componentData.list[index].commentId this.axios .post(self.publicPath + '/comment/addCommentReply', { commentId: item.id, replyUserCode: userCode, replyContent: item.replyContent }) .then(res => { if (res.data.code == 1) { self.$message.success('发布成功') self.commentContent = '' self.$emit('childFn', item.commentTargetId) } else { self.$message.error('发布失败') } }) },