微信小程序:封装微信原生方法

封装微信原生方法

封装请求:utils / index.js


// 封装请求方法
function request(method, url, data) {
  return new Promise((resolve, reject) => {
    wx.showLoading({
      title: '加载中',
    })
    wx.request({
      method,
      url,
      data,
      success: res => {
        resolve(res.data)
      },
      complete() {
        wx.hideLoading()
      }
    })
  })
}

// get请求
export function $get(url, data) {
  return request('GET', url, data)
}

// post请求
export function $post(url, data) {
  return request('POST', url, data)
}

// showToast提示
export function $showToast(title,icon) {
  wx.showToast({
    title: title,
    icon: icon
  })
}

/**
 * 接收页面通过 data- 传递的参数
 */
export function $d(e, key) {
  let res = e.currentTarget.dataset;
  console.log('res',res)
  return key ? res[key] : res
}

/**
 * 封装原生:this.setData()方法
 */
export function $setData(key, val) {
  this.setData({
    [key]: val
  })
}

/**
 * 统一页面对象,封装了Page,添加了自定义方法
 * @params option  同原本的Page参数
 */
export default function Router(option) {
  option.$get = $get
  option.$post = $post
  option.$setData = $setData
  option.$d = $d
  option.$showToast = $showToast
  return Page(option)
}

使用方法:页面的结构

<view bindtap="handleClick" data-zz="3">
  首页{{num}}
</view>

<view wx:for="{{list}}" wx:key="item.id">
  {{item.name}}
</view>

使用方法:页面的js文件

// 引入封装的方法
import Router from '../../utils/index.js'

Router({
  data: {
    num: 20,
    pageIndex: 1,
    list: [{
        id: 0,
        name: 'vue'
      },
      {
        id: 1,
        name: 'React'
      }
    ]
  },
  handleClick(e) {
    let {zz} = this.$d(e)
    console.log(zz)
    const array = [{
      id: 1,
      name: 'HTML'
    }]
    this.$setData('list', array)
  },
  async getList(){
    let data = this.$get(url,data); // data中传入  this.data.pageIndex
      
    // 请求第一页数据:先清空数组
    if(this.data.pageIndex === 1){ this.data.list = [] 
                                  
    if(data && data.length){
      this.$setData('list',this.data.list.concat(data))
    }else{
      this.$showToast('no More','none')
    }
    
  },
  // 页面初始化
  onLoad(){
    this.getList()
  },
  /**
   * 页面上拉触底事件
   */
  onReachBottom(){
    this.data.pageIndex++
    this.getList()
  },
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function() {
    setTimeout(() => {
      wx.shopPullDownRefresh({
        success: (res) => {
          this.data.pageIndex = 1
          this.getList()
        }
      })
    }, 500)
  }
})
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落花流雨

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值