鸿蒙OS 添加交互

2020-09-18 13:55 更新

添加交互通过在组件上关联事件实现。本节将介绍如何用 div、text、image 组件关联 click 事件,构建一个如下图所示的点赞按钮。

图1 点赞按钮效果

img

点赞按钮通过一个 div 组件关联 click 事件实现。div 组件包含一个 image 组件和一个 text 组件:

  • image 组件用于显示未点赞和点赞的效果。click 事件函数会交替更新点赞和未点赞图片的路径。
  • text 组件用于显示点赞数,点赞数会在 click 事件的函数中同步更新。

click 事件作为一个函数定义在 js 文件中,可以更改 isPressed 的状态,从而更新显示的 image 组件。如果 isPressed 为真,则点赞数加 1。该函数在 hml 文件中对应的 div 组件上生效,点赞按钮各子组件的样式设置在 css 文件当中。具体的实现示例如下:

  1. 添加交互通过在组件上关联事件实现。本节将介绍如何用 divtextimage 组件关联 click 事件,构建一个如下图所示的点赞按钮。
  2. 1 点赞按钮效果
  3. 点赞按钮通过一个 div 组件关联 click 事件实现。div 组件包含一个 image 组件和一个 text 组件:
  4. image 组件用于显示未点赞和点赞的效果。click 事件函数会交替更新点赞和未点赞图片的路径。
  5. text 组件用于显示点赞数,点赞数会在 click 事件的函数中同步更新。
  6. click 事件作为一个函数定义在 js 文件中,可以更改 isPressed 的状态,从而更新显示的 image 组件。如果 isPressed 为真,则点赞数加1。该函数在 hml 文件中对应的 div 组件上生效,点赞按钮各子组件的样式设置在 css 文件当中。具体的实现示例如下:
  7. <!-- xxx.hml -->
  8. <!-- 点赞按钮 -->
  9. <div>
  10. <div class="like" onclick="likeClick">
  11. <image class="like-img" src="{{likeImage}}" focusable="true"></image>
  12. <text class="like-num" focusable="true">{{total}}</text>
  13. </div>
  14. </div>
  15. /* xxx.css */
  16. .like {
  17. width: 104px;
  18. height: 54px;
  19. border: 2px solid #bcbcbc;
  20. justify-content: space-between;
  21. align-items: center;
  22. margin-left: 72px;
  23. border-radius: 8px;
  24. }
  25. .like-img {
  26. width: 33px;
  27. height: 33px;
  28. margin-left: 14px;
  29. }
  30. .like-num {
  31. color: #bcbcbc;
  32. font-size: 20px;
  33. margin-right: 17px;
  34. }
  35. // xxx.js
  36. export default {
  37. data: {
  38. likeImage: '/common/unLike.png',
  39. isPressed: false,
  40. total: 20,
  41. },
  42. likeClick() {
  43. var temp;
  44. if (!this.isPressed) {
  45. temp = this.total + 1;
  46. this.likeImage = '/common/like.png';
  47. } else {
  48. temp = this.total - 1;
  49. this.likeImage = '/common/unLike.png';
  50. }
  51. this.total = temp;
  52. this.isPressed = !this.isPressed;
  53. },
  54. }
  55. JS UI 框架还提供了很多表单组件,例如开关、标签、滑动选择器等,以便于开发者在页面布局时灵活使用和提高交互性,详见容器组件。

  1. /* xxx.css */
  2. .like {
  3. width: 104px;
  4. height: 54px;
  5. border: 2px solid #bcbcbc;
  6. justify-content: space-between;
  7. align-items: center;
  8. margin-left: 72px;
  9. border-radius: 8px;
  10. }
  11. .like-img {
  12. width: 33px;
  13. height: 33px;
  14. margin-left: 14px;
  15. }
  16. .like-num {
  17. color: #bcbcbc;
  18. font-size: 20px;
  19. margin-right: 17px;
  20. }

  1. // xxx.js
  2. export default {
  3. data: {
  4. likeImage: '/common/unLike.png',
  5. isPressed: false,
  6. total: 20,
  7. },
  8. likeClick() {
  9. var temp;
  10. if (!this.isPressed) {
  11. temp = this.total + 1;
  12. this.likeImage = '/common/like.png';
  13. } else {
  14. temp = this.total - 1;
  15. this.likeImage = '/common/unLike.png';
  16. }
  17. this.total = temp;
  18. this.isPressed = !this.isPressed;
  19. },
  20. }

JS UI 框架还提供了很多表单组件,例如开关、标签、滑动选择器等,以便于开发者在页面布局时灵活使用和提高交互性。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号