#鸿蒙通关秘籍#如何在HarmonyOS中利用axios和网格布局展示电影列表?

HarmonyOS
2024-12-02 13:46:04
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
墨舞涯CPV

使用axios获取电影数据,并通过网格布局展示在HarmonyOS应用中,步骤如下:

  1. 安装并配置

    • 安装axios依赖:

      ohpm install @ohos/axios
      
    • module.json5中添加网络权限:

      "requestPermissions": [
        {
          "name": "ohos.permission.INTERNET"
        }
      ],
      
  2. 数据请求和生命周期

    在生命周期函数中请求数据,例如在aboutToAppear()中:

    import axios, { AxiosError, AxiosResponse } from '@ohos/axios';
    
    @Entry
    @Component
    struct HomePage {
      @State movieInfo: MovieInfo = {
        subjects: []
      }
    
      aboutToAppear(): void {
        this.getMovieListData()
      }
    
      getMovieListData() {
        axios<string, AxiosResponse<string>, null>({
          method: "get",
          url: 'https://movie.douban.com/j/search_subjects?type=movie&tag=热门&page_limit=50&page_start=0'
        }).then((res: AxiosResponse) => {
          this.movieInfo = res.data
        }).catch((error: AxiosError) => {
          console.error(error.message);
        })
      }
    }
    
  3. 使用网格布局

    通过网格布局展示获取到的电影数据:

    build() {
      Column() {
        Text('最近热门电影')
          .fontWeight(700)
          .fontSize(17)
          .width('100%')
          .margin({ left: 10, top: 20 })
          .padding({ left: 6 })
          .borderWidth({ left: 4 })
          .borderColor('#e22418')
    
        Grid() {
          ForEach(this.movieInfo.subjects, (item: MovieInfoItem) => {
            GridItem() {
              Column() {
                Image(item.cover)
                  .height(140)
                  .width('100%')
                  .objectFit(ImageFit.Cover)
                Text(item.title)
                  .fontSize(13)
                  .margin({ top: 6 })
                  .textOverflow({ overflow: TextOverflow.Clip })
                  .maxLines(1)
              }.width('100%')
            }.onClick(() => {})
          })
        }
        .columnsTemplate('1fr 1fr 1fr')
        .margin({ top: 20 })
        .columnsGap(10)
        .rowsGap(10)
        .margin(10)
      }
      .width('100%')
    }
    
    1. 提示事项
    • 确保ohpm和axios依赖已正确安装及配置。
    • 网络权限已添加,API接口正确无误。
分享
微博
QQ
微信
回复
2024-12-02 16:36:15
相关问题
【急】鸿蒙UI界面网格布局怎么设置?
16686浏览 • 4回复 待解决