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 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