微信小程序总结1

 

1.在调用wx.getUserInfo等api的时候需要判断是否已经授权,否则会出现获取不到用户信息的情况

文档说明:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/setting/wx.getSetting.html

2.Promise的理解:

Promise也是相当于ajax的异步回调,只是为了避免出现多层嵌套调用ajax才用promise,这样的好处是不用每次请求都写这么长

      wx.login({
        success: res => {
          // 发送 res.code 到后台换取 openId, sessionKey, unionId
          if (res.code) {
            wx.getSetting({
              success: ret => {
                if (ret.authSetting['scope.userInfo']) {
                  wx.getUserInfo({
                    success: info => {
                      var rawData = info.rawData;
                      var signature = info.signature;
                      var iv = info.iv;
                      var encryptedData = info.encryptedData;
                      // console.log('1'+rawData)
                      // console.log('2' +signature)
                      // console.log('3' +iv)
                      // console.log('4' +encryptedData)
                      // console.log('5' +res.code)
                      // return
                      //发起网络请求
                      wx.request({
                        url: 'http://www.tp6.com/api/login',
                        method: 'post',
                        data: {
                          code: res.code,
                          rawData: rawData,
                          signature: signature,
                          iv: iv,
                          encryptedData: encryptedData
                        },
                        success(re) {
                          console.log(re.data.data)

                          // 可以将 res 发送给后台解码出 unionId
                          app.globalData.userInfo = re.data.data
                          app.globalData.isLog = true
                          app.globalData.session3rd = re.data.data.session3rd
                          that.setData({
                            userInfo: re.data.data,
                            hasUserInfo: true
                          })
                          wx.hideLoading()
                          // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
                          // 所以此处加入 callback 以防止这种情况
                          // if (app.userInfoReadyCallback) {
                          //   app.userInfoReadyCallback(info)
                          // }
                        }
                      })
                    }
                  })
                }
              }
            })  

3.自定义组件的理解

第一种:父级页面可以向自定义组件插入内容

<view class="wrapper">
  <view>这里是组件的内部节点</view>
  <slot></slot>
</view>

第二种:Component 构造器

     注意点1:调用组件都要在json文件中填写对应的组件路径

                2:组件的属性理解:

// component/auth/auth.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    myProperty: { // 属性名
      type: String,
      value: ''
    },
    myProperty2: String // 简化的定义方式
  },
  attached: function () {
    // 在组件实例进入页面节点树时执行
    console.log(this.properties.myProperty2)
  },
  /**
   * 组件的初始数据
   */
  data: {

  },

  /**
   * 组件的方法列表
   */
  methods: {
    onTap: function () {
      console.log('wwww')
      // var myEventDetail = {} // detail对象,提供给事件监听函数
      // var myEventOption = {} // 触发事件的选项
      // this.triggerEvent('myevent', myEventDetail, myEventOption)
    }
  },
  onMyEvent: function (e) {
    console.log('21212')
     // 自定义组件触发事件时提供的detail对象
  }
})

 这里定义了两个属性:myProperty和myProperty2,并且是两种定义方式,含义是相同的,属性的用法如下 

  //父级页
  <auth bindmyevent="onMyEvent" myProperty2="属性值">
    <!-- 这部分内容将被放置在组件 <slot> 的位置上 -->
    <view>这里是插入到组件slot中的内容</view>
  </auth>

在组件中定义的属性是给父级页向组件传值的,组件拿到值就可以打印出来

  attached: function () {
    // 在组件实例进入页面节点树时执行,就是页面进入组件触发
    console.log(this.properties.myProperty2)
  },

                       3.this.triggerEvent('myevent', {}, {}) 的理解

//父级页 
 <auth bindmyevent="onMyEvent" myProperty2="">
    <!-- 这部分内容将被放置在组件 <slot> 的位置上 -->
    <view>这里是插入到组件slot中的内容</view>
  </auth>

       其中bindmyevent中的myevent就是组件的js里面的this.triggerEvent('myevent'),而onMyEvent则是父级页js里面定义的函数,this.triggerEvent就是可以用来调用父页面的方法

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值