LikeComponent.ets 1.6 KB
import { Logger } from 'wdKit/Index'
import { LikeViewModel } from '../../viewmodel/LikeViewModel'

@Component
export struct LikeComponent {
  @State likeStatus: boolean = false
  viewModel: LikeViewModel = new LikeViewModel()
  @Prop data: Record<string, string>
  enableBtn = true

  //上层传值  样例
  // this.data['contentId'] = '30035444649' //必须
  // this.data['userName'] = '人民日报网友2kD2xW'
  // this.data['contentType'] = '8'  //必须
  // this.data['title'] = '开创两校交流先河!克罗地亚教育代表团访问同济大学'
  // this.data['userHeaderUrl'] = ""
  // this.data['channelId'] = "2059"  //必须
  // this.data['status'] = "1"  //必须

  aboutToAppear(): void {
    if (this.data) {
      Logger.debug("ddd: " + this.data['status'])
      if (this.data['status'] == '1') {
        this.likeStatus = true
      } else {
        this.likeStatus = false
      }

    }

  }

  build() {
    Column() {
      Image(this.likeStatus ? $r('app.media.icon_like_select') : $r('app.media.icon_like_default'))
        .width(24)
        .height(24)
        .onClick(() => {
          if (!this.enableBtn) {
            return
          }
          if (this.likeStatus) {
            //1
            this.executeLike('1')
          } else {
            //0
            this.executeLike('0')
          }
        })
    }.width(24).height(24)
  }

  executeLike(status: string) {
    this.data['status'] = status
    this.viewModel.executeLike2(this.data).then(() => {
      this.likeStatus = !this.likeStatus
      this.enableBtn = true
    }).catch(() => {
      this.enableBtn = true
    })
  }
}