我正在构建评论回复系统,但不幸的是,由于回复按钮位于其中,所以我无法将所有逻辑都整合到一个组件中。因此,我必须与我的主要vue实例和Reply-textarea组件共享数据。
它是如何工作的,当我单击<button @click="onShowReplyTextarea(comment_id)">Reply to comment 2</button>
时,它将comment_id添加到主要实例上的一系列公开答复中。
然后,<reply-textarea :comment-id="comment_id" v-on:submitted="hideReplyTextarea()" :open-textareas-array="showReplyTextarea"></reply-textarea>
组件采用属性openTextareasArray
,并使用它显示openTextareasArray
中的答复文本区域。
为了显示每个评论的回复文本区域,我使用一个计算属性来判断当前commentId是否在openTextareasArray
<div v-show="message === null" v-show="isInOpenTextareasArray" >
computed: {
isInOpenTextareasArray(){
return this.openTextareasArray[this.commentId] > -1;
}
}
我得到的问题是计算属性似乎被延迟了,因此在打开另一个答复文本区域之前,注释答复文本区域不会打开。我将使用观察程序来查找注释文本区域是否打开,但是我无法确定