微信小程序之跳坑指南

微信小程序之跳坑指南    

    

一、编写目的

      本文档旨在说明本人在开发小程序时遇到的一些问题,对最近接触的小程序开发做出一些总结。以便以后查看并解决问题,也为和其它小程序开发者共同交流探讨。

二、问题总结

Ø  函数重复

    当有两个方法重名时,位于后面的方法会覆盖前面的方法, IDE也不会报错,这个坑大家一定要注意。

Ø  背景图片加载问题

      在进行微信小程序开发时开发工具自带的模拟器可以正常显示,但是手机上面体验版查看居然没有图片。因为background-image:url(本地路径) 这样设置背景图片,不管是wxss里面设置,或者wxml里面这样设置都是不行的

解决方案:

      1.使用网上资源图片,即https请求过来的图片,例如:background-image:url('https://...')

      2.本地图片使用image组件加载

           1).并且设置高度不能为百分比

           2).图片的url里面不能有中文

           3).图片的HTTP应为小写的http以及图片的后缀为小写的.png或者.jpg(建议全部为png)

           4).图片名称没有空格

Ø 背景图片铺满全屏问题,

      本地图片使用image组件加载时需设置高度,且必须为准确高度,设置height:100%是无效的,满屏设置是1334rpx。 但是1334rpx在iphone X上面显示下方会有留白。

      解决方案:

           当前页面onload事件获取当前手机的宽度和高度,动态绑定到wxml上面即可。

Ø 页面传值问题

    需要获取view组件的值。

         解决方案:

      第一种解决方式:

              view里面加个属性为data-value=“值” data是前缀。后面跟一个变量名。这个名字自己可以随意定义。

例:

<viewbindtap='djLouPan'data-text='{{item}}'class="table"wx:for="{{addList}}">{{item.areaName}}<view>

                js中则使用e.currentTarget获取,event.currentTarget.dataset.变量; data后面跟的名字跟获取这里的名字一致就可以获取到

例:

djLouPan: function (e) {

    var data = e.currentTarget.dataset.text;

}

      第二种解决方式:

           在view上面加一个属性id="需要得到的值"

例:

<viewbindtap='djLouPan'id='{{item}}'class="table"wx:for="{{addList}}">{{item.areaName}}<view>

           js中则使用e.currentTarget获取。

例:

djLouPan: function (e) {

    var data = e.currentTarget.id;

}

Ø  页面传值问题二

    不加载onload事件传递数据。场景:A 、B两个页面,A页面跳转到B页面 。然后B页面选择后把数据带回A页面并且不改动A页面已经输入过的值。

      解决方案:

      在B的js文件中给A里面的变量赋值。

例:

var pages = getCurrentPages(); //得到所有的页面

var prevPage = pages[pages.length - 2];//上一个页面。

//给上一个页面的变量赋值

prevPage.setData({

      addressResult:result,

})

注:addressResult为A页面的变量。

Ø  wxml页面逻辑判断问题

    wxml文件里面的逻辑判断不起作用。

      解决方案:

           wxml文件的逻辑判断都要放在{{ }}里面。

           错误写法:wx:if="{{item.id}}==1"

           正确写法:wx:if="{{item.id==1}}"

Ø  页面跳转方法解析

    页面各个跳转方法解析

      1.wx.navigateTo():

             保留当前页面,跳转到应用内的某个页面,并且左上角带有返回图标,使用wx.navigateBack可以返回到原页面。但是不能跳转到tabBar页面

      2. wx.redirectTo():

           关闭当前页面,跳转到应用内的某个页面,左上角不会带返回图标

    3. wx.switchTab():

           跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面,不能跳转非tabBar页面,并且不会带有返回图标

      4.wx.reLaunch():

              关闭所有页面,打开到应用内的某个页面,左上角不会带返回图标

Ø  页面深度问题

       当前小程序页面深度为10,即只能跳转10个页面,超过10个页面则所以组件失效。

      解决方案:

      最后页面使用wx.reLaunch()跳转到不需要带有返回图标的页面或使用wx.switchTab()跳转tabBar页面。

Ø  页面跳转问题

    1.使用跳转方法跳转页面时多次连击加载多次页面问题

      解决方案:

           增加Loading遮罩层,使其不能联系点击。

      例:

              wx.showLoading({

           title: '加载中',

           mask: true,

         })

        setTimeout(function () {

           wx.hideLoading()

         }, 2000);

      2.使用wx.navigateBack()返回上一页时,多次点击返回多页。

      解决方案:

           增加开关控制是否跳转。

      例:

           onShow函数中设置值。

              onShow: function () {

             this.pageLoading = !1;

        }

           跳转事件中处理:

              if (!this.pageLoading) {

             this.pageLoading = !0; 

            wx.navigateBack();

         }

Ø  this作用域问题

    在request请求回调函数等异步操作的时候,使用this.setData({})保存数据时出错。

      解决方案:

      在函数外部写上:var that=this;

Ø  调用外部js函数问题

      引入外部js后,使用变量名调用方法无效。

      例:

              var util = require('../../utils/util.js');

        调用util.requestData(reqData, eventData)时报错;

      解决方案:

           调用外部js函数时,需先在外部js中输出函数。

      例:

              module.exports = {

             formatTime: formatTime,

           }

      注:formatTime为函数名。

Ø  tabbar页面切换问题。

         tabbar在切换时页面数据无法刷新

      解决方案:

      tabbar的实现可能是显示和隐藏view,所以,不会一直调用page.onLoad()方法,可以尝试把代码逻辑写在page.onShow()里面。

Ø  scroll-view组件滚动框问题

      scroll-view组件移除滚动框

      解决方案:

      wxss中增加

      ::-webkit-scrollbar{

        width:0;

        height:0;

        color:transparent;

    }

Ø  swiper组件问题

      自定义swiper样式

      解决方案:

      /*swiper组件指示点距下高度*/

    .swiper-box.wx-swiper-dots.wx-swiper-dots-horizontal {

         margin-bottom:50rpx;

    }

    /*swiper组件指示点样式*/

    .swiper-box.wx-swiper-dot {

        width:10rpx;

        display:inline-flex;

        height:10rpx;

        /* margin-left: 20rpx;//每个点的间距 */

        border-radius:5rpx;

        justify-content:space-between;

    }

Ø  一段文字如何换行

      小程序中唯一可以实现换行的标签组件是text

Ø  小程序打开事件

         在小程序打开时加载一些数据

      解决方案:

      app.js里面增加

    onLaunch:function () {

        //逻辑

     },

Ø  设置页面背景色问题

      在框架配置文件app.json中的window里面设置所有页面的背景色不起作用,同时在页面配置文件.json中设置也不起作用。

      解决方案:

      app.wxss文件中设置:

      page {

        

      }

Ø  授权问题

      小程序第一次启动用户拒绝授权后,下一次无法唤起授权弹框,默认记住上一次用户的选择。暂时没有找到解决方法,微信也没有相关解析。

Ø  证书问题

         使用request无法请求网络,报错:errMsg: "request: fail ssl hand shake error"

      解决方案:

      tsl需支持1.2以上,并且手机系统证书中要有其对应的根证书,查看手机证书步骤,设置—>高级设置—>安全—>受信任的凭据

Ø  引用wxss文件问题

         在页面中引入模板的wxss文件,必须采用@import引入,且需要以;结尾,否则会出错。

Ø  列表渲染问题

      页面中如果使用wx:for列表渲染时,外部使用view组件时只显示一行数据。

例:

         <view  wx:elif="{{clickType==2}}">

         <viewwx:for="{{monthlyIncome}}"wx:key='this'style="line-height:80rpx;text-align:center;">{{item}}</view>

     </view>

解决方案:

         使用<block/>标签

例:

    <block  wx:elif="{{clickType==2}}">

         <viewwx:for="{{monthlyIncome}}"wx:key='this'style="line-height:80rpx;text-align:center;">{{item}}</view>

    </block>

三、审核不通过原因收集

·        1、小程序简介没有介绍小程序功能

·        2、类目与页面提供的内容不一致

·        3、小程序提供的服务和内容必须是正式的,不能以测试内容提交,多次以测试内容提交

·        4、含有声音视频内容,请补充相关对应类目

·        5、首页图片与文字有互相重叠,建议优化

·        6、搜索框及少数下才能选中,页面评论点击无响应,页面图片分辨率尺寸失真

·        7、部分图片显示被压缩体检不好

·        8、有账号体系的小程序,除自有登录方式,必须支持微信授权登录

·        9、必须登录才能使用的服务,请提供测试账号

·        10、存在虚拟物品在线交易, ios系统需要走IAP,小程序暂不支付,请留意后续

·        11、小程序服务类目所对应的页面中的核心内容必须与该类目一致。

·        12、必须保证用户在该页面能使用该服务类目,不得隐藏,不得进行多次跳转

·        13、不得展示和推荐第三方小程序。示例:不能做小程序导航,不能做小程序链接互推,小程序排行榜等

·        14、小程序的页面内容中,存在诱导类行为,包括但不限于诱导分享、诱导添加、诱导关注公众号、诱导下载等,要求用户分享、添加、关注或下载后才可操作的程序,含有明示或暗示用户分享的文案、图片、按钮、浮层、弹窗等的小程序,通过利益诱惑诱导用户分享、传播的小程序,用夸张言语来胁迫、引诱用户分享的小程序,强制或诱导用户添加小程序的,都将会被拒绝;

·        15、禁止视频、音乐、语音等多媒体的自动播放

·        16、如果小程序有账户系统,必须提供能正常使用且易于发现的“退出”账户选项

·        17、小程序内容不能包含赌博、竞猜和抽奖的。

·        18、小程序的页面内容中,不能存在测试类内容;示例:算命,抽签,星座运势等。

 注:有其它问题欢迎讨论、交流,共同进步。

猜你喜欢

转载自www.cnblogs.com/hui-yue/p/9100432.html