1.0.1 • Published 3 years ago

@mas.io/adc-evaluation v1.0.1

Weekly downloads
-
License
ISC
Repository
-
Last release
3 years ago

安装

tnpm install --save @alipay/adc-evaluation

组件介绍

行业小程序评论组件。实现了评论系统在渲染层面的一套完整解决方案。 使用限制: 1. 暂不支持对二级评论的点赞。 2. ios下,由于小程序不能使textarea自动聚焦唤起键盘,因此在发送消息时的交互上有缺陷。

参数说明

属性必填参数类型参数说明默认值示例
commentsObject所有的评论数据。{ total: 0, data: [] },见详解
mode'A' | 'B' | 'C'模式A:最简单的模式,完全根据comments的数据一次性全部渲染。此模式的demo在/demo/pages/index。 模式B:一级评论支持上拉分页加载。需要传onFetchComment数据加载方法配合使用。 模式C:在模式B的基础上,使二级评论的展开使用弹窗㫫示,并支持上拉分页加载。需要传onFetchChildComment数据加载方法配合使用'A'--
articleArray主题相关数据。likesCount:点赞数,liked:本人是否点了赞,collected:本人是否点了收藏{ likesCount: 0, liked: false, collected: false }--
userObject用户(本人)的id和name--{ id: 123, name: 'XXXX' }
authorObject主题文章作者的id和name--{ id: 123, name: 'XXXX' }
messageConfigObjectmin设置回复消息的最小长度,max设置回复消息textarea的maxlength{ min: 1, max: -1 }--
childCommentFoldLimitNumber二级评论的折叠限度。超过以后会显“剩余X条回复”2--
limitNumber分页请求每页条数10--
loadContentArray加载时的底部提示'马不停蹄加载更多数据中...', '-- 已经到底了,加不了咯 --'--
autoScrollBoolean插入新评论后,如果不在可视区域,是否自动滚动(mode B C生效)true--
showComplainBoolean底部选项弹窗是否显示投拆按钮true--
extraBottomOptionsArray底部选项弹窗可新增的自定义按钮[]'复制', '转发'
footerIconsObject底部输入框右侧的图标按钮显示配置。设为false则不显示{ liked: true, collect: true, share: true }--
useDefaultFooterIconsBoolean若要使用底部输入框右侧的图标的自定义插槽,需要设为falsetrue--
defaultPlaceholderString底部输入框的默认placeholder'说点什么…'--
classNameString组件容器自定义类名----
onTapLikesFunction评论点赞事件。(commentId) => void;null--
onUserTapFunction用户头像、名称点击事件。(user: Object) => void; user是comments中的相应user数据null--
onLoadMoreFunction折叠的二级评论点击展开事件。(commentId) => void;null--
onIconTapFunction底部输入框右侧的图标按钮点击事件。(type: 'likes' | 'collect' | 'share') => void;null--
onSendMessageFunction新消息发送事件,成功后需返回新评论的id。(msgData: Object) => id; msgData包含:commentId: 回复评论的id。如果回复的是主题,为null。message: 回复内容。replyToAuthor: 回复对象的信息。replyType: 'author' | 'self' | 'others'null--
onDeleteFunction删除事件。只有自已的评论才能删除。删除成功后需返回true。(commentId, childCommentId) => boolean;null--
onComplainFunction投诉事件。(commentId, childCommentId) => void;null--
onBottomPopupTapFunction底部选项弹窗自定义事件。null--
onFetchComment是(mode B C)Function评论数据请求; (page: number, limit: number) => Promise < { total(数据总数): number, list(数据): [] }>;使用方法详见demonull--
onFetchChildComment是(mode C)Function二级评论数据请求; (page: number, limit: number, commentId) => Promise < { total(数据总数): number, list(数据): [] }>; 使用方法详见demonull--

comments详解

comments.data是所有的评论数据,comments.total是所有评论的数量。 组件为受控组件,只负责数据渲染与基本的交互,因此所有相关的操作都需要使用方自已处理comments数据。 comments.data的内容示例如下:

[{
  "id": 893699089, // 评论id
  "content": "原来吃得饱真的会容易犯困😂", // 评论内容
  "createdTime": 1585838087000, // 创建时间
  "hot": true, // 热评标记
  "author": { // 评论作者
    "id": "1989c9da524485b28b221c90ea43a755",// 作者id
    "name": "Micky", // 作者名称
    "avatarUrl": "https://pic2.zhimg.com/da8e974dc.jpg?source=06d4cd63" // 作者头像
  },
  "likesCount": 97, // 点赞数
  "liked": false, // 本人是否点赞
  "childCommentCount": 4, // 子评论总条数
  "childComments": [ // 子评论数据
    {
      "id": 893717955,
      "content": "所以记住吃八分饱哦~加餐补充能量",
      "createdTime": 1585839133000,
      "author": {
        "id": "5b9b52904d577fb91a65f88896aa758b",
        "name": "杨布豆",
        "avatarUrl": "https://pic2.zhimg.com/v2-88b0739e47e888591ae3052d4640fa7f.jpg?source=06d4cd63"
      },
      "replyToAuthor": { // 子评论的回复对象
        "id": "1989c9da524485b28b221c90ea43a755",
        "name": "Micky",
        "avatarUrl": "https://pic1.zhimg.com/da8e974dc.jpg?source=06d4cd63"
      }
    }
  ]
}]

Slot

Name说明是否必传
headerB、C模式使用,文章正文需要放在此插槽内B、C模式必传
footerIcons底部输入框右侧的图标按钮的自定义插槽,使用时需设置useDefaultFooterIcons为false

附带的投诉页面

组件附带的投诉页面,需要使用方自行创建页面,实现跳转。 页面只需要引入投诉组件就可以了。详细示例见demo。

投诉页面参数说明

属性必填参数类型参数说明默认值示例
classNameString组件容器自定义类名----
optionsArray投诉选项'含有广告信息', '含有色情、淫秽内容', '含有低俗、辱骂内容', '含有反社会、暴力等内容'--
onSubmitFunction提交事件。(option: string) => void;null--

时间格式显示规则

距当前时间 1. 一分钟内,显示为 刚刚 2. 一小时内,显示为 xx 分钟前 3. 小于 24 小时,显示为 xx 小时 xx 分钟前(整小时不显示分钟) 4. 间隔超过 24 小时,并且处于昨天,显示:昨天 xx:xx 5. 同一年,显示:xx 月 xx 日 xx:xx 6. 跨年,显示:xxxx 年 xx 月 xx 日 xx:xx

在小程序中使用

主组件

{
  "usingComponents": {
    "adc-evaluation": "/components/es/index"
  }
}

投诉页面

{
  "usingComponents": {
    "adc-evaluation-complain": "/components/es/sub_components/complain/index"
  }
}

在 page.axml 中引用组件

A模式

<!-- 页面使用方式 -->
<view>
  <view class="article">
    文章正文
  </view>
  <adc-evaluation mode="A"
    comments="{{comments}}"
    article="{{article}}"
    user="{{user}}"
    author="{{author}}"
    onTapLikes="onTapLikes"
    onLoadMore="onLoadMore"
    onIconTap="onIconTap"
    onUserTap="onUserTap"
    onSendMessage="onSendMessage"
    onDelete="onDelete"
    onComplain="onComplain">
  </adc-evaluation>
</view>

B、C模式

<!-- 页面使用方式 -->
<adc-evaluation mode="C"
  comments="{{comments}}"
  article="{{article}}"
  user="{{user}}"
  author="{{author}}"
  onTapLikes="onTapLikes"
  onIconTap="onIconTap"
  onSendMessage="onSendMessage"
  onDelete="onDelete"
  onComplain="onComplain"
  onFetchComment="onFetchComment"
  onFetchChildComment="onFetchChildComment">
  <view slot="header"
    class="article">
    文章正文,需要用slot插入
  </view>
</adc-evaluation>

Badges

TNPM version TNPM downloads install size