微信小程序封装网络数据请求

微信小程序封装网络数据请求

  • 目录结构

    在这里插入图片描述

  • 在根目录下创建api文件夹

  • app文件夹下创建http.jshome.jsindex.js(可以自定义)文件

    • app文件夹下的文件http.js

      /**
       * url
       * method
       * header
       * data
       * timeout
       */
      
      const timeout = 5000
      const baseURL = 'http://localhost:3000'
      
      export default function ({
        url = '',
        data = '',
        method = 'GET',
        header = {
          'content-type': 'application/json'
        },
        // 图标
        isLoading = false,
        ...options
      }) {
        return new Promise((resolve, reject) => {
          if(isLoading) wx.showLoading({
            title: '加载中...',
          })
          wx.request({
            url: baseURL + url,
            data,
            header,
            timeout,
            ...options,
            success: (res) => {
              if (res.statusCode === 200 || res.statusCode === 201) return resolve(res.data)
            },
            fail: (err) => {
              reject(err)
            },
            complete:() => wx.hideLoading()
          })
        })
      }
      
  • 在需要使用的地方进行导入即可使用

    • app文件夹下的文件home.js中(这里的后台数据是我自己的,需要的留言)

      import http from './http'
      
      // 查询商品
      export const queryGoods = (data) => http({
        url:'/home/queryGoods',
        data,
        isLoading:true
      })
      
  • 统一导出

    • app文件夹下的文件index.js

      export * from './home'
      
  • 在需要的地方进行导入

    • 在页面index中的index.js

      import {queryGoods} from '../../api/index'
      
      Page({
        data: {
         goods:[]
        },
        onLoad() {
          this.queryGoods()
        },
        async queryGoods() {
          const {data} = await queryGoods({
            type:'pop',
            page:10
          })
          // console.log(goods);
          this.setData({goods:data})
        }
      })
      
    • 这个时候就可以看到调试器中的AppData数据已经请求过来了,可以进行页面的渲染了。

      在这里插入图片描述

  • 页面的渲染

    • 在页面index中的index.wxml

      <view class="goods-list">
        <view class="goods" wx:for="{{goods}}" wx:key="index">
          <image src="{{item.show.img}}" mode="widthFix"></image>
          <view class="title">{{item.title}}</view>
        </view>
      </view>
      
    • 在页面index中的index.wxss

      .goods-list {
        display: flex;
        flex-wrap: wrap;
        justify-content: space-evenly;
      }
      .goods {
        width: 45%;
      }
      .goods image {
        width: 100%;
        border-radius: 20rpx;
      }
      .title {
        padding: 0 5rpx;
        overflow: hidden;
        white-space: nowrap;
        line-height: 60rpx;
        text-overflow: ellipsis;
        font-size: 24rpx;
      }
      
  • 页面最后的渲染效果

    在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值