• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 添加交互
2<!--Kit: ArkUI-->
3<!--Subsystem: ArkUI-->
4<!--Owner: @jiangtao92-->
5<!--Designer: @piggyguy-->
6<!--Tester: @songyanhong-->
7<!--Adviser: @HelloCrease-->
8
9添加交互可以通过在组件上关联事件实现。本节将介绍如何用div、text、image组件关联click事件,构建一个如下图所示的点赞按钮。
10
11![zh-cn_image_0000001064068638](figures/zh-cn_image_0000001064068638.gif)
12
13
14点赞按钮通过一个div组件关联click事件实现。div组件包含一个image组件和一个text组件:
15
16
17- image组件用于显示未点赞和点赞的效果。click事件函数会交替更新点赞和未点赞图片的路径。
18
19- text组件用于显示点赞数,点赞数会在click事件的函数中同步更新。
20
21
22click事件作为一个函数定义在js文件中,可以更改isPressed的状态,从而更新显示的image组件。如果isPressed为真,则点赞数加1。该函数在hml文件中对应的div组件上生效,点赞按钮各子组件的样式设置在css文件当中。具体的实现示例如下:
23
24
25```html
26<!-- xxx.hml -->
27<!-- 点赞按钮 -->
28<div>
29  <div class="like" onclick="likeClick">
30    <image class="like-img" src="{{likeImage}}" focusable="true"></image>
31    <text class="like-num" focusable="true">{{total}}</text>
32  </div>
33</div>
34```
35
36
37```css
38/* xxx.css */
39.like {
40  width: 104px;
41  height: 54px;
42  border: 2px solid #bcbcbc;
43  justify-content: space-between;
44  align-items: center;
45  margin-left: 72px;
46  border-radius: 8px;
47}
48.like-img {
49  width: 33px;
50  height: 33px;
51  margin-left: 14px;
52}
53.like-num {
54  color: #bcbcbc;
55  font-size: 20px;
56  margin-right: 17px;
57}
58```
59
60
61```js
62// xxx.js
63export default {
64  data: {
65    likeImage: '/common/unLike.png',
66    isPressed: false,
67    total: 20,
68  },
69  likeClick() {
70    var temp;
71    if (!this.isPressed) {
72      temp = this.total + 1;
73      this.likeImage = '/common/like.png';
74    } else {
75      temp = this.total - 1;
76      this.likeImage = '/common/unLike.png';
77    }
78    this.total = temp;
79    this.isPressed = !this.isPressed;
80  },
81}
82```
83
84
85除此之外,还提供了很多表单组件,例如开关、标签、滑动选择器等,以便于开发者在页面布局时灵活使用和提高交互性。
86