后浪云百度小程序教程:like 点赞

  • like 点赞
    • 属性说明
      • like-param 点赞服务参数说明
    • 示例
      • 使用方式
      • 代码示例
    • Bug & Tip

    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 是一一对应,能保证点赞服务的可用性。
    THE END