like 点赞

解释:通过点赞组件,用户可以对文章内容或者评论内容进行点赞,被点赞的用户可以收到消息通知。更多点赞设计指引,详见如何提升小程序互动体验

属性说明

属性名类型必填默认值说明
is-likedBooleanfalse是否已被点赞
modeStringicon按钮模式。icon:表示仅有图标;mixture:表示图标文字结合
icon-typeStringhand图标类型。hand:表示手形;heart:表示心形
styleStringnone仅在 mode 为 mixture 时可配置。none:无边框;border:有边框
like-textString点赞按钮上的文案。默认为赞,仅在 mode 属性值为’mixture’时有效
like-numNumber0点赞数量
like-typeNumber0被点赞的对象类型。0:表示对文章内容进行点赞;1:表示对评论内容进行点赞
animation-typeNumber1点赞动效形式。0:无动效;1:轻动效;2:强动效
is-show-toastBooleanfalse点赞后是否弹出 toast 提示
toast-textArray[‘已点赞’, ‘已取消’]toast 文案,默认为已点赞、已取消
like-paramObject点赞服务需要的必要参数
bind:errorEventHandle使用 npm 方式引入点赞组件时,点击按钮时在用户未登录状态下会触发此事件;使用动态库方式引入点赞组件时,点击按钮时在用户未登录状态下不会触发此事件
bind:successEventHandle点击点赞按钮,在点赞服务成功后将状态返回给使用组件者
bind:failEventHandle点击点赞按钮,在点赞服务失败后将状态返回给使用组件者

like-param 点赞服务参数说明

snid 和 spid 分别是文章内容和评论内容的唯一标识,由开发者创建和维护。当对文章内容进行点赞时,只需要填写 snid ;当对文章下某一评论进行点赞时,需要填写 snid 和 spid 。

属性名类型必填默认值说明示例值
openidString用户身份唯一标识,获取方法
snidString被点赞的文章的 id,与 path 参数一一对应‘20200101’
spidString被点赞的评论 id
titleString文章标题
pathString智能小程序内页链接,最长不能超过 194 字符。如该文章需要入信息流投放,需保证该参数与信息流投放提交的 path 一致,否则将会影响流量“path”:”/pages/index/index”

示例

跳转编辑工具

在开发者工具中打开

在 WEB IDE 中打开

扫码体验

代码示例

百度智能小程序

请使用百度APP扫码

使用方式

方式一:npm 引入

  1. # 进入项目根目录, 路径以./projectRoot为例
  2. cd ./projectRoot
  3. # 未安装过点赞组件
  4. npm install @smt-ui/content-component
  5. # 以前安装过点赞组件
  6. npm update
  • JSON
  1. {
  2. "usingComponents": {
  3. "smt-like": "@smt-ui/content-component/src/like"
  4. }
  5. }

方式二:动态库引入

在 app.json 中引入内容服务组件动态库。

  • JSON
  1. {
  2. "dynamicLib": {
  3. "myDynamicLib": {
  4. "provider": "smart-sc"
  5. }
  6. }
  7. }

在页面配置 JSON 文件中,以动态库方式引入。

  • JSON
  1. {
  2. "usingComponents": {
  3. "smt-like": "dynamicLib://myDynamicLib/like"
  4. }
  5. }

代码示例

  • SWAN
  • JS
  1. <custom chineseName="点赞" engName="like"></custom>
  2. <view class="container">
  3. <view class="card-area">
  4. <view class="top-description border-bottom">图标按钮样式</view>
  5. <view class="button-box">
  6. <smt-like
  7. class="custom-class"
  8. like-param="{{likeParam}}"
  9. bind:error="error"
  10. bind:success="clicksucc">
  11. </smt-like>
  12. <smt-like
  13. icon-type="heart"
  14. like-param="{{likeParam}}"
  15. bind:error="error">
  16. </smt-like>
  17. </view>
  18. </view>
  19. <view class="card-area">
  20. <view class="top-description border-bottom">组合按钮样式</view>
  21. <view class="button-box button-box-mixture">
  22. <smt-like
  23. class="custom-class-mixture"
  24. mode="mixture"
  25. like-param="{{likeParam}}"
  26. like-text="{{likeText}}"
  27. bind:error="error">
  28. </smt-like>
  29. <smt-like
  30. class="custom-class-mixture"
  31. likeNum="12"
  32. mode="mixture"
  33. icon-type="heart"
  34. like-param="{{likeParam}}"
  35. like-text="{{likeText}}"
  36. bind:error="error">
  37. </smt-like>
  38. <smt-like
  39. class="custom-class-mixture"
  40. mode="mixture"
  41. style="border"
  42. like-param="{{likeParam}}"
  43. like-text="{{likeText}}"
  44. bind:error="error">
  45. </smt-like>
  46. <smt-like
  47. mode="mixture"
  48. likeNum="12"
  49. style="border"
  50. icon-type="heart"
  51. like-param="{{likeParam}}"
  52. bind:error="error">
  53. </smt-like>
  54. </view>
  55. </view>
  56. <view class="card-area">
  57. <view class="top-description border-bottom">动效组合样式1</view>
  58. <view class="button-box button-box-mix">
  59. <view class="button-item">
  60. <smt-like
  61. animation-type="{{0}}"
  62. like-param="{{likeParam}}"
  63. bind:success="clicksucc"
  64. bind:error="error">
  65. </smt-like>
  66. <view class="button-tip">无动效</view>
  67. </view>
  68. <view class="button-item">
  69. <smt-like
  70. like-param="{{likeParam}}"
  71. bind:success="clicksucc"
  72. bind:error="error">
  73. </smt-like>
  74. <view class="button-tip">轻动效</view>
  75. </view>
  76. <view class="button-item">
  77. <smt-like
  78. animation-type="{{2}}"
  79. like-param="{{likeParam}}"
  80. bind:success="clicksucc"
  81. bind:error="error">
  82. </smt-like>
  83. <view class="button-tip">强动效</view>
  84. </view>
  85. </view>
  86. </view>
  87. <view class="card-area">
  88. <view class="top-description border-bottom">动效组合样式2</view>
  89. <view class="button-box button-box-mix">
  90. <view class="button-item">
  91. <smt-like
  92. icon-type="heart"
  93. animation-type="{{0}}"
  94. like-param="{{likeParam}}"
  95. bind:success="clicksucc"
  96. bind:error="error">
  97. </smt-like>
  98. <view class="button-tip">无动效</view>
  99. </view>
  100. <view class="button-item">
  101. <smt-like
  102. icon-type="heart"
  103. like-param="{{likeParam}}"
  104. bind:success="clicksucc"
  105. bind:error="error">
  106. </smt-like>
  107. <view class="button-tip">轻动效</view>
  108. </view>
  109. <view class="button-item">
  110. <smt-like
  111. icon-type="heart"
  112. animation-type="{{2}}"
  113. like-param="{{likeParam}}"
  114. bind:success="clicksucc"
  115. bind:error="error">
  116. </smt-like>
  117. <view class="button-tip">强动效</view>
  118. </view>
  119. </view>
  120. </view>
  121. <view class="card-area">
  122. <view class="top-description border-bottom">点击提示反馈</view>
  123. <view class="button-box">
  124. <smt-like
  125. is-show-toast="{{true}}"
  126. like-param="{{likeParam}}"
  127. bind:success="clicksucc"
  128. bind:error="error">
  129. </smt-like>
  130. </view>
  131. </view>
  132. <view class="space"></view>
  133. </view>
  1. Page({
  2. data: {
  3. likeParam: {}
  4. },
  5. onLoad() {
  6. const pageStack = getCurrentPages();
  7. const currentPage = pageStack[pageStack.length - 1];
  8. const privateProperties = currentPage.privateProperties || {};
  9. const currentUri = privateProperties.accessUri || currentPage.uri;
  10. const snid = 'test_snid';
  11. this.setData('likeParam', {
  12. snid: snid,
  13. spid: '' + Date.now(),
  14. openid: 'mVMFstfXtsndgnRObr7BoP9hoL',
  15. title: '我是文章标题',
  16. path: currentUri + '&snid=' + snid
  17. });
  18. },
  19. error() {
  20. // 在使用 npm 方式引入点赞组件时,点击按钮时在用户未登录状态下会触发此事件,建议提前引导用户完成登录
  21. }
  22. });

Bug & Tip

  • Tip:只有登录用户才能进行对文章内容或者评论内容的点赞。
  • Tip:只有小程序使用点赞组件后,被点赞的用户才能收到消息通知。
  • Tip:like-param 点赞服务参数中,snid 和 path 是一一对应,能保证点赞服务的可用性。