微信小程序开发记录

ES6 map()函数 (选择作用)

var users = [
{name: "张含韵", "email": "zhang@email.com"},
{name: "江一燕", "email": "jiang@email.com"},
{name: "李小璐", "email": "li@email.com"}
];

var emails = users.map(function (user) { return user.email; });

console.log(emails.join(", ")); 

// zhang@email.com, jiang@email.com, li@email.com

此方法用于我对于获取总数据中选择data里面的数组去选择我需要的部分

小程序本地储存

wx.setStorageSync('key','value);

wx.getStorageSync( 'key');

web中存数据会先调用toString() 把数据变为字符串 再进行储存

小程序存的数据什么类型 获取的就是什么类型


onload(option)

{

​ //option里面包含我从其他页面跳转url带参的参数

}

组件的子传父 父传子

<!-- 监听自定义事件 bindtabsitemchange是子组件向父组件传值加bind -->
<tab tabs="{{tabs}}" bindtabsitemchange="handitemchange"></tab>

子组件接受参数

 properties: {
    tabs:{
      type:Array,
      value:[]
    }
  },

子组件向父组件传值

  methods: {
      //点击事件
      handleitemtap(e)
      {
        const {index}=e.currentTarget.dataset
        this.triggerEvent("tabsitemchange",{index} )
      }
  }

父组件对传值的处理

//tab子组件点击事件
handitemchange(e)
{
  console.log(e);
  //获取被点击的标题索引
  const {index}=e.detail;
  let {tabs}=this.data
  tabs.forEach((value,i)=>i==index?value.isactive=true:value.isactive=false)
  this.setData({
      //更新父组件的内容
    tabs
  })
  
},

## 用到的周期函数
//只用加载该页面才调用  
  onLoad: function (options) {
      console.log(options);
      this.qureyparams.cid=options.cid
      console.log(this.qureyparams);
      this.getgoodslist()
  },

       //每次回到该页面就会调用
     onShow(){
         ...
     },
      
//页面滚动条触底事件 要判断是否有下一页数据 总页数 页码   页码*获取条数>=总数据 没有下一页
  onReachBottom()
  {
      //判断是否还有下一页
      if(this.qureyparams.pagenum>=this.totalpagesize)
      {
        //给个提示
        wx.showToast({
          title:'',
          icon:'none',
          duration:1500,
         
        })
      }
      else{
     
         this.qureyparams.pagenum++
        console.log(this.qureyparams.pagenum);
        this.getgoodslist()
      }
  },
	
//下拉刷新触发函数 
  onPullDownRefresh(){
      //1 重置数组
      this.setData({
        goodslist:[]
      })
      //重置页数
      this.qureyparams.pagenum=1
      //重新发请求
      this.getgoodslist()
      //在方法里面手动关闭下拉刷新等待效果
      //( wx.stopPullDownRefresh())
  },
      
      

对于下拉刷新可以在需要的文件下加"enablePullDownRefresh": true

也可以在app.json全局加刷新效果 包括下拉刷新的样式也是可以添加的

  "window":{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#eb4450",
    "navigationBarTitleText": "fanfan",
    "navigationBarTextStyle":"white",

    "backgroundColor": "#0094ff"

  },

对于下拉加载新数据的方法

先对原先数据进行解构后,把新数据加进去,而不是刷新数组

 this.setData({
      goodslist:[...this.data.goodslist,...res.data.message.goods]
    })


小程序对于用户权限调用以及获取

//权限给与设置  ***
  //调用小程序内置api 获取用户的收货地址 追踪授权状态 SCOPE
  //增加收货地址
  handleaddress() {

    //打印授权的状态
    wx.getSetting({
      success: (res) => { 
        console.log(res);
        //判断用户是否给权限
        const scopeaddress = res.authSetting["scope.address"]
        //用户同意权限 直接调用
        if (scopeaddress || scopeaddress == undefined) {
          wx.chooseAddress({
            success: (result) => {
              //存地址到缓存
              wx.setStorageSync('address', result);
              console.log(result);
            },
          });
        }
        //如果没给 调用接口让用户同意  打开授权页面
        else {
          wx.openSetting({
            success: (result) => {
              console.log(result);
              //调用用户同意权限接口
              wx.chooseAddress({
                success: (res) => {
                  wx.setStorageSync('address', res);
                  console.log(res);

                },

              });
            },

          });
        }
      },
    });
  },