评论回复组件库的使用

<template>
  <!-- 
   属性及事件详情详见 https://github.com/wanglinyong/hbl-comment
 -->
  <div>
    <comment
      :commentList="commentList"
      @doSend="sendContent"
      @doChidSend="childSend"
      :commentNum="commentList.length"
    />
  </div>
</template>

<script>
import comment from "hbl-comment";
export default {
  components: {
    comment,
  },
  data() {
    /**
     * commentList中对象的id以当前commentList的长度+1依次增长,
     * childrenList中对象的id以父级id开头拼上当前childrenList长度+1一次增长
     */
    return {
      // commentList: [
      //   {
      //     id: 11,
      //     commentUser: {
      //       id: "222",
      //       nickName: "果子",
      //       avatar:
      //         "https://ae01.alicdn.com/kf/H94c78935ffa64e7e977544d19ecebf06L.jpg",
      //     },
      //     targetUser: {},
      //     content: "今天天气真好",
      //     createDate: "2021-9-6",
      //     childrenList: [
      //       {
      //         id: 21,
      //         commentUser: {
      //           id: "333",
      //           nickName: "弹过",
      //           avatar:
      //             "https://ae01.alicdn.com/kf/Hd60a3f7c06fd47ae85624badd32ce54dv.jpg",
      //         },
      //         targetUser: {
      //           id: "2221",
      //           nickName: "果子",
      //           avatar:
      //             "https://ae01.alicdn.com/kf/H94c78935ffa64e7e977544d19ecebf06L.jpg",
      //         },
      //         content: "[哈哈][可爱][可怜]",
      //         createDate: "2021-9-6",
      //       },
      //       {
      //         id: 22,
      //         commentUser: {
      //           id: "333",
      //           nickName: "gg过",
      //           avatar:
      //             "https://ae01.alicdn.com/kf/Hdd856ae4c81545d2b51fa0c209f7aa28Z.jpg",
      //         },
      //         targetUser: {
      //           id: "333",
      //           nickName: "弹过",
      //           avatar:
      //             "https://ae01.alicdn.com/kf/Hd60a3f7c06fd47ae85624badd32ce54dv.jpg",
      //         },
      //         content: "[哈哈][可爱][可怜]",
      //         createDate: "2021-9-6",
      //       },
      //     ],
      //   },
      // ],
      commentList: [],
    };
  },

  mounted() {
    console.log(JSON.parse(localStorage.getItem("userInfo")));
  },

  methods: {
    sendContent(val, isFather) {
      let userInfo = JSON.parse(localStorage.getItem("userInfo"));
      //初始文本框发送事件只有一个参数,因此第二个参数为undefined
      if (isFather === undefined) {
        this.commentList.push({
          id: this.commentList.length + 1,
          commentUser: {
            id: userInfo.id,
            nickName: userInfo.username,
            avatar:
              "https://ae01.alicdn.com/kf/H94c78935ffa64e7e977544d19ecebf06L.jpg",
          },
          targetUser: {},
          content: val,
          createDate: "2021-9-6",
          childrenList: [],
        });
      }
    },

    childSend(content, commentUserId, pid) {
      // 评论列表中文本框发送事件有三个参数,分别为:评论内容,被评论用户id,父级评论id
      this.commentList.map((item, index) => {
        if (item.id === pid) {
          this.commentList[index].childrenList.push({
            id: `${pid}${this.commentList[index].childrenList.length + 1}`,
            commentUser: {
              id: "333",
              nickName: "弹过",
              avatar:
                "https://ae01.alicdn.com/kf/Hd60a3f7c06fd47ae85624badd32ce54dv.jpg",
            },
            targetUser: {
              id: "222",
              nickName: "果子",
              avatar:
                "https://ae01.alicdn.com/kf/H94c78935ffa64e7e977544d19ecebf06L.jpg",
            },
            content: content,
            createDate: "2021-9-6",
          });
        }
      });
    },
  },
};
</script>
<style scoped></style>

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Element UI生成帖子评论回复界面,你需要使用Vue.js作为前端框架,并在Vue.js中安装和使用Element UI组件。 首先,你需要在Vue.js项目中安装Element UI,可以通过npm命令行执行以下命令来安装: ``` npm install element-ui --save ``` 安装完成后,你需要在Vue.js项目的入口文件(如main.js)中引入Element UI: ```js import Vue from 'vue' import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' Vue.use(ElementUI) ``` 接下来,你可以使用Element UI提供的组件来生成评论回复界面,一个基本的评论回复组件示例代码如下: ```vue <template> <div> <!-- 评论列表 --> <div v-for="comment in comments" :key="comment.id"> <p>{{ comment.content }}</p> <el-button type="text" @click="showReplyForm(comment.id)">回复</el-button> <!-- 回复表单 --> <div v-if="comment.showReplyForm"> <el-form> <el-form-item label="回复内容"> <el-input v-model="comment.replyContent"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitReply(comment.id)">提交</el-button> </el-form-item> </el-form> </div> <!-- 子评论列表 --> <div v-for="reply in comment.replies" :key="reply.id"> <p>{{ reply.content }}</p> </div> </div> <!-- 评论表单 --> <div> <el-form> <el-form-item label="评论内容"> <el-input v-model="commentContent"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitComment">提交评论</el-button> </el-form-item> </el-form> </div> </div> </template> <script> export default { data() { return { commentContent: '', comments: [ { id: 1, content: '这是一条评论', showReplyForm: false, replyContent: '', replies: [ { id: 1, content: '这是一条回复' } ] } ] } }, methods: { showReplyForm(commentId) { // 显示回复表单 const comment = this.comments.find((item) => item.id === commentId) comment.showReplyForm = true }, submitReply(commentId) { // 提交回复 const comment = this.comments.find((item) => item.id === commentId) comment.replies.push({ id: comment.replies.length + 1, content: comment.replyContent }) comment.showReplyForm = false comment.replyContent = '' }, submitComment() { // 提交评论 this.comments.push({ id: this.comments.length + 1, content: this.commentContent, showReplyForm: false, replyContent: '', replies: [] }) this.commentContent = '' } } } </script> ``` 这个示例代码中包含了评论列表、回复表单、子评论列表和评论表单等功能,并使用了Element UI的组件,如el-form、el-input和el-button等。你可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值