comment-publisher 评论发布器

基础库 3.100.4 版本及以上调起原生半屏发布器,3.100.4 以下版本调起小程序版评论发布器。

解释: 评论发布器组件,为开发者提供发布评论业务功能,此外还提供评论内容审核、用户接收百度 APP 消息通知服务。此组件支持开发者自定义配置原生半屏发布器,适用于开发者接入各自平台的后端服务。

# 属性说明

属性名 类型 必填 默认值 说明
show-publish Boolean false NA 和组件版支持,评论发布器默认是隐藏状态,需要通过设置此属性调起,写法:show-publish="{= showPublish =}"
content-placeholder String 请输入内容 NA 和组件版支持,提示占位文案
module-list Array 仅 NA 版支持,显示模块 list
emoji-path String 仅 NA 版支持,设置自定义表情配置路径
foucs Boolean false 仅组件版支持,true 代表调起,false 则不调起
is-upLoad-image Boolean false 仅组件版支持,是否展示上传图片按钮
request-url String is-upLoad-image 为 true,则必填 仅组件版支持,由于小程序图片预览只能是 http 或 https,所以上传图片需要先上传到服务器
comment-param Object - NA 和组件版支持,内容评论成功后返回给百度服务测的参数,在点击发表按钮时回传
comment-param.openid String - NA 和组件版支持,用户身份唯一标识,获取方法
comment-param.snid String - NA 和组件版支持,动态 id,是动态在开发者侧的唯一标识。不应为空。若此时小程序侧没有对应的标识,则会先创建动态。
comment-param.spid String 是/否 - NA 和组件版支持,一级评论 id。当对评论进行评论时为必填项,不传表示对动态评论。
comment-param.srid String - NA 和组件版支持,此条评论 id
comment-param.title String - NA 和组件版支持,动态标题
comment-aram.content String - NA 和组件版支持,动态内容
comment-param.images Array - NA 和组件版支持,动态图集,json 数组,格式 ["a.jpg","b.jpg"]
comment-param.appkey String NA 和组件版支持,小程序 App Key,在小程序管理中心>设置>开发设置中获取
comment-param.path String NA 和组件版支持,用于跳转的 schema 的 path 和 query 的拼接,参考如下:path='/page/a/b?query=q'
bind:fail EventHandle NA 版和组件版支持,调用百度服务失败的回调
bind:error EventHandle 仅组件版支持,点击按钮时在用户未登录状态下触发的事件
bind:browsemode EventHandle 仅组件版支持,当输入框失焦后会触发事件(NA 版不支持,降级版支持)
bind:relasecomment EventHandle NA 和组件版支持,点击发表按钮时触发的事件。在 NA 版中相当于 success 成功回调中 status 为 reply 状态
bind:close EventHandle 仅 NA 版支持,点击空白处关掉发布器的回调,相当于 NA 版 success 成功回调中 status 为 draft 的状态
bind:previewimage EventHandle 仅组件版支持,点击输入框中已经上传的图片时触发的事件(NA 版不支持,降级版支持)

# relasecomment/browsemode/error 返回草稿内容说明

参数名 类型 说明
inputValue String 正文输入框中的内容
uploadImgUrl Array.<object> 图片的本地文件列表,每一项是一个 File 对象。

# module-list 列表

若 module-list 传空数组或不传,则默认展示正文、图片模块、表情模块。若传值,则只展示所传 list 中配置的模块。
如:module-list: ['image'] 则只展示图片模块。

module-list 类型 描述
image String 图片模块
emoji String 表情模块

# emoji-path 参数说明

开发者在配置 emoji 模块后,可以选择是否使用自定义表情表。若使用自定义表情功能,则将自定义表情的资源文件夹路径传入 emojiPath 字段。若不传 emojiPath 字段则使用默认表情包。

自定义表情资源文件夹格式:
文件夹中包括:emoji.json 和所有表情图片资源。外层文件夹名字可以由开发者自由定义,路径配置在 emojiPath 中即可,emoji.json 为固定文件名,请开发者按格式创建。表情没有数量和大小限制,但是表情资源会占用包体大小。

图片

emoji.json 格式:

图片

# 消息通知服务错误代码说明

erro 说明
0 写入正常
202 参数请求有误
203 签名校验失败
30x 数据库请求异常
40x 基础服务-下游异常
420 评论标签写入错误
701 评论发表频率过高
800 明星动态 meta 信息查不到
802 主题已下线或关闭写入评论
803 主题不存在
811 评论正文字数过长或过短
812 父级评论不存在
831 用户被管理员封禁
832 用户未登录(或获取用户信息失败)
833 获取机器账号失败
850 命中反作弊策略:正文重复提交
851 正文、账号昵称命中拒绝词表关键词
871 设备(客户端 cuid)被封禁
872 评论仅自己可见
880 命中反作弊策略:评论内容命中网信办规定拒绝词
882 回复至原文生成 replyid 失败

注:40x, 420, 803, 812, 882 影响可用性

# 示例

扫码体验
重新加载
请使用百度APP扫码

# 图片示例

# 代码示例

安装组件:

npm install @smt-ui/content-component

在 页面 json 文件中:

    {
        "usingComponents": {
            "c-comment-publisher": "@smt-ui/content-component/src/comment-publisher"
        }
    }
    
      <view class="btn-comment" bind:tap="clickComment">点击评论</view>
      <c-comment-publisher
          show-publish="{= showPublish =}"
          comment-param="{{commentParam}}"
          is-upLoad-image="true"
          request-url="https:xxx.xxx.com"
          bind:browsemode="browseModeEventHandler"
          bind:relasecomment="relaseCommentEventHandler"
          bind:error="error"
          bind:previewimage="previewImageHandler">
      </c-comment-publisher>
      
      // 测试用例
      const getSrid = () => {
          let openid = '';
          for (let i = 0; i < 12; i++) {
              openid += Math.floor(Math.random() * 10);
          }
          return openid + 'dd';
      };
      Page({
          relaseCommentEventHandler() {
              let param = {
                  snid: '999999999999',
                  path: '332222',
                  appkey: 'mkItFCpOGQDyGqitHh0VKrxP2jBGU20V',
                  srid: getSrid(),
                  title: '评论的文章的标题',
                  openid: '36GetTsw0nWRMVaYnlswLQ9t7y',
                  content: 'cascsahclsahcslchdls'
              };
              this.setData('showPublish', false);
              this.setData('commentParam', param);
          },
          clickComment() {
              this.setData('showPublish', true);
          },
          error() {
              // 这里处理未登录
              swan.login({
                  success: res => {
                      console.log('login success', res);
                  },
                  fail: err => {
                      console.log('login fail', err);
                  }
              });
          }
      });
      

      # Bug&Tip

      • Tip:对比原生半屏内容发布器差异说明
        1. 增加了一个必填属性 comment-param,此属性是百度请求后端时的必传参数,需要在 relasecomment 事件中回传;
        2. 增加了一个 error 事件,点击发表按钮时在用户未登录状态下触发,开发者可在此时处理用户登录相关操作;
        3. 增加了一个 close 事件,仅 NA 版支持,点击空白处关掉发布器的回调,相当于 NA 版 success 成功回调中 status 为 draft 的状态;
        4. 相关文档:1)接收审核结果:消息推送文档消息推送介绍;2)动态库引用方法:动态库使用方法