【前端-uniapp】填坑记录

471 阅读2分钟

一、switch开关

  这个坑应该埋了很久了,正常人都会这样写<switch @change="handleSwitch"></switch>,对啊对啊,官方文档都是这样说的。但是这样一触发开关,就无法回退了,就是触发了开关状态肯定会改变,而且这个改变是无法变动的。

这就导致我们根据后台接口返回的成功或者是失败重置switch状态无法生效。

最优解决方法: 禁用switch的滑动,将@change改为@click,单纯当做点击事件

 <switch color="#4451F1"
         style="transform:scale(0.7)"
         :checked="isWx"
         disabled
         @click="changeSwitch('wx')" />

完美解决,但是就是少了点击时候丝滑的滑动~

二、分包问题

  uniapp如果想打包成微信小程序,微信小程序的主包可是要求2m以下呀,除了把图片在服务器引入,还可以在每个的分包中加入文件夹 static/ 这样打出来的图片和音频等静态资源一般在分包里面,主包不会很大~

manifest.json改为源码模式

"mp-weixin" : {
    "optimization" : {
        "subPackages" : true
    }
},

加上这句一定要重新运行代码,不要傻傻的等待哟~

三、控制台不知名warnning

  在控制台看到提示警告<v-uni-view v-for="item in child">: component lists rendered with v-for should have explicit keys. 按照中文的理解就是v-for少了key。

解决方法:全局搜索v-for字符,结果在uni-ui的<uni-data-pickerview>中的v-for少了一个key,坑坑。

四、微信小程序-授权登录

  微信小程序授权登录,uni.login这个api一定要用对顺序,否则就会报不知名的错误,一开始是用在跟后端接口交互的函数前面,在uni.login的成功回调中立马请求后端接口,结果发现后端同事接口报错啦

java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $

刚开始我是果断甩锅给后端同事
后面发现是我错了,真正的使用是应该在onShow上

onShow(){
    let that = this
    uni.login(res){
        that.code = res.code
    }
}

就是一定,一定要在进入页面的调用uni.login方法,避免报错!