目前在做一个聊天APP的项目,左右都是组件,左边是聊天群,右边是聊天分享内容,下面有截图
左:
右:
无论怎么点击左边都是会在同一个路由下,左边通过请求后台拿到每个聊天群的信息,点击选择时通过vuex保存起来
然后右边聊天组件能取到,正常情况下都是可以正常的。点击群,右边就进入updated()钩子。
目前在做一个点赞的需求,问题就来了,我在某一个群的某一个消息中点赞了一次(比如说在第二条),然后我进入别的聊天群里面对应的item下已赞,虽然我没有给它点赞。
对应的没有点赞却有已赞的项:
我通过vue-Devtools看了下相关vuex的item是正常的,不知道为何会继承这个已赞,刷新页面就好了,不过仅仅切换群就还是已赞
关于点赞的逻辑代码:
<div class="downLoad" v-if='item.fileLists'>
<div class="signDownload" v-show='!(idx === index)'><span v-if='item.fileLists.length > 1' @click='downloadMore(index)'>批量下载</span><span v-else><a :data-id='item.fileLists[0].fileId' @click='sigelDownLoad'>下载</a>
</span><span @click='clickLike(item, index, $event)'>{{feedLikeClick(item.feeds)}}</span><span @click='wantCommit(index)'>发表评论</span></div>
<div class="quitDownload" v-show='idx === index'>
<span class="checkFileNeed">请勾选你要下载的文件</span><span v-show= false>已选择了 个文件,共 M</span><span class="rightNow">立即下载</span><span class="quitButton" @click='quitDownload'>取消</span>
</div>
<feed :feeds='item.feeds' ref='feeds' :feedNeed='{"shareId": item.shareId, "index": index}'></feed>
</div>
feedLikeClick(obj) {
if (obj.length !== 0) {
let like = ''
for (let item of obj.values()) {
if (item.feedType === 1 && item.userId === userId()) {
like = '已赞'
break
} else {
like = '点赞'
}
}
return like
} else {
return '点赞'
}
}
大致看懂了,感觉是后端的问题。你看看在另外一个群里面的接口中返回的是否点赞的字段是什么,如果接口是没有点赞,但是前端是已点赞,可能是你复用的模板中点赞没有更新,如果是这样的话,可以在聊天信息的模板中监听一下路由的改变,重新刷新一下组件。但是还是感觉是后端的问题