美文网首页
第一次写微信小程序记录学习点<一>

第一次写微信小程序记录学习点<一>

作者: 玉思盈蝶 | 来源:发表于2021-07-26 17:53 被阅读0次

1、子类组件:

Component({
  /**
   * 组件的属性列表
   */
  properties: {
    itemArray: {
      type: Array,
      default: []
    },
    isShow: {
      type: Boolean,
      default: false
    },
    rightBtnTitle: {
      type: String,
      default: '修改订单数量'
    }
  },

组件事件回调:

methods: {
    // 订单详情
    handleOrderDetail: function (e) {
      console.log('订单', e, this.data.orderItem.id)
      wx.setStorage({
        key: "isNewMallOrder",
        data: this.data.orderItem.isNewMallOrder,
      });
      // 1 获取点击的id
      const { id } = e.currentTarget.dataset;
      // 2 触发 父组件中的事件 自定义
      this.triggerEvent("handleOrderDetail", { id });
    },

在要使用组件类导入,使用:

{
  "usingComponents": 
    "cartPopup": "../../components/cart-popup/cart-popup",
  },
  "navigationBarTitleText": ""
}
<cartPopup itemArray="{{alertDataArray}}"></cartPopup>

2、debugger进行调试、抓包调试:

3、使用Vant Weapp快速构建UI:

https://youzan.github.io/vant-weapp/#/quickstart

4、textarea、input等控件安卓真机出现莫名其妙的黑线:

注意css样式是否设置了line-height。
或者添加overflow:hidden;即可。
或者是textarea的滚动条,设置line-height高一点。

5、textarea展示placeholder对齐问题:

<textarea wx:if="{{showTextarea || detailInputAddress}}" value="{{detailInputAddress}}" focus="{{focus}}" bindinput="handleDetailAddressInput" placeholder="填写详细地址,不少于5个字" placeholder-style="color:#cccccc;margin-top: 10rpx;" bindblur="handleInputEnd" maxlength="100" auto-height="true"></textarea>
    <view class="textareaTextBox" style="{{detailInputAddress ? 'color:#1E1E1E;' : ''}}" wx:else bindtap="handleFocus">{{detailInputAddress || '填写详细地址,不少于5个字'}}
</view>

6、textarea设置不展示滚动条:

textarea::-webkit-scrollbar {
  display:none
}

7、utils工具类使用:

 // 验证手机号是否有误
  isPhoneAvailable: function (phone) {
    var myreg = /^[1][1-9][0-9]{9}$/;
    if (!myreg.test(phone)) {
      return false;
    } else {
      return true;
    }
  },
使用:
const Utils = require("../../utils/utils");

if (!Utils.isPhoneAvailable(this.data.inputTelValue.trim())) {
    wx.showToast({
    title: "请输入正确的联系电话",
    icon: "none",
    });
    return;
    }

8、wx.showToast()注意点:

wx.showToast({
    title: "收货地址不能少于5个字",
    icon: "none",
});

注意设置icon是“none”,不然默认是success的图标。

9、跳转页面传参数:

一个属性之类直接拼接url后即可;
传值过多使用缓存即可;
还可以使用传json。

wx.setStorage({
  key: 'operateAddress',
  data: {
    address: item  // 当前操作地址信息
  }
})
app.nav.navigateTo({
  url: '../addAddress/addAddress?addressType=1',
})
let json = JSON.stringify(this.data.orderDetailInfo)
    navigator.navigateTo({
      url: '../refund/refund?refundType=1&orderDetailInfo=' + json
});

// 使用:
let orderDetailInfo = JSON.parse(options.orderDetailInfo);

10、当后端不做分页,小程序渲染页面很卡,前端处理分页使用:

// 1、获取数据setData:
 this.setData({
    loading: false,
    allList:allList,
    allOrderList: allList.slice(0, 5),
    }, () => {
    this.handleFilterData();
})

// 2、递归实现分页数据:
handleFilterData() {
    if (this.data.allList.length > this.data.allOrderList.length) {
      this.data.pageNum+=1;
      let currNum = this.data.pageNum * 5 > this.data.allList.length?this.data.allList.length : this.data.pageNum * 5;
      let currList = this.data.allList.slice((this.data.pageNum -1) * 5, currNum);
      console.log('pageNum = ', this.data.pageNum)
      let allOrderList= [...this.data.allOrderList, ...currList]
      this.setData({
        allOrderList
      }, () => {
        this.handleFilterData();
      })
    }
  },

11、小程序支付,注意处理支付成功之后的跳转:

handleRequestPayInfo(e) {
    console.log('e = ', e);
    // 1 获取被点击的id
    const { id } = e.detail;
    console.log('orderId = ', id);
    let params = {
      orderId: id,
      openId: app.globalData.openId,
      payType: 'WECHAT_APPLET_PAY'
    }
    console.log('请求支付信息参数:' + JSON.stringify(params))
    app.ajax.post(app.urlConfig.pay, params).then(res => {
      console.log('请求支付信息结果:' + JSON.stringify(res))
      let data = JSON.parse(res.data)
      wx.requestPayment({
        nonceStr: data.nonceStr,
        package: data.package,
        paySign: data.paySign,
        timeStamp: data.timeStamp,
        signType: 'MD5',
        success(res) {
          this.getOrderListInfo(this.data.currentTab);
        }
      })
    }).catch(err => {
      console.log(JSON.stringify(err))
    })
  },

相关文章

网友评论

      本文标题:第一次写微信小程序记录学习点<一>

      本文链接:https://www.haomeiwen.com/subject/xdygmltx.html