前言

这几天在做一个app,打比赛用,使用的是uni+uView的组件库。这个组件库是半道加进来的,学弟推荐的,我看有组件的话确实会方便很多,而且他都是按需引入,不占用额外空间,挺好的,我也就直接拿来用了。

使用感想:感觉这套技术栈跟vue+element差不多了emm,就是某些官方api还不太一样,还是比较顺手的。

组件库传送门: uView - 多平台快速开发的UI框架

但是,不熟悉组件的api以及参数,让我踩了坑,非常难受emm,还是写个记录,长长记性。

本次内容:分享一次因粗心踩的坑,一个自己进行封装的经历

坑:uView组件库,uToast组件

传送门:Toast 消息提示

使用方法:

// 将这个标签放在页面中
<u-toast ref="uToast" />
// 需要消息提示的话,加上如下代码
this.$refs.uToast.show({title: '登录成功',type: 'success',url: '/pages/user/index'
})

参数:

  • title:消息提示显示的文本

  • type:主题类型,不填默认为default(一共有6中主题色)

  • url:toast结束跳转的url,不填不跳转

更多详细api请点击上方toast传送门去到该组件库官网看

我遇到的坑,便是填写了url,他执行结束后不跳转。

说一下我的大致使用情况:

登录成功后弹出消息提示登录成功,完后跳转到一个tab页面上去。但是他只给弹出登录成功,不报错也不跳转。当时真的人傻了,找了好多地方,也打了断点,所有的事情都告诉我一切正常。于是我开始怀疑起我的电脑emm,我将整个程序打包,发给了我的学弟,让他在他电脑上帮我调试一下,结果与我电脑一致(nice!那就是电脑没坏,还能用),在我吃完饭回到电脑前准备跟这个问题决一死战的时候,学弟发来的一张截图让我人呆滞了。

参数 说明 类型 默认值 可选值
isTab toast结束后,跳转tab页面时需要配置为true Boolean fasle true

没错,就是这个表格。我才知道这个组件要是跳转到tab页面的话还需要额外配置一个参数,赶忙加上,于是我又从坑中站了起来。

关于toast结束跳转URL

  • 如果配置了url参数,在toast结束的时候,就会用uni.navigateTo(默认)或者uni.switchTab(需另外设置isTabtrue)
  • 如果配置了params参数,就会在跳转时自动在URL后面拼接上这些参数,具体用法如下:
this.$refs.uToast.show({title: '操作成功',url: '/pages/user/index',params: {id: 1,menu: 3}
})

这个故事告诉我们,大家使用之前一定要摸清楚api,不要学习泽泽!!!

封装uni.getStorage函数

这个应该不算坑,我只是觉得他这个使用起来不是很方便(好像是相当不方便)

传送门:uni.getStorage

它的作用就是从本地缓存中异步获取指定 key 对应的内容。

我的需求就是要从缓存中获取一些我之前存入进去的东西,但是我取一个还好,某一处需要取两个的话要把这个函数写两次,反正我本人是觉得很麻烦的(即使CV不麻烦,但在程序员眼中,代码相似程度有点高),那为什么不尝试着封装一下呢?

函数本来的样子:

uni.getStorage({key: 'storage_key',success: function (res) {console.log(res.data);}
});

他是根据key,去取缓存中的数据,完后返回值res.data中就是我们需要的数据了。

思路就是:传一个key给他,同时接好res.data的值

改造前:

uni.getStorage({key: 'token',success:(res) => {console.log('token:'+ res.data)this.token = res.data}
})
uni.getStorage({key: 'username',success:(res) => {console.log('username' + res.data)this.userInfo.username = res.data}
})

改造后:

getCache(a){let b = '';console.log('a:'+a)uni.getStorage({key:a,success:(res)=>{console.log('res.data:'+res.data);b = res.data;return res.data;}})return b;
},

需要调用的时候这样:

let username = this.getCache('username')

是不是非常的方便呢?

封装,yyds

最后

踩坑可以迟到,但永远不会缺席,我们能做的就是每次细心一点,并且把犯过的错,背过的锅记录在小本本上,再也不去犯第二次。

毕竟,神也会犯错呀!

祝愿天下的程序员都少一点bug吧。

改进上面的封装函数

自己今天使用的时候发现,这样封装只能单页面内使用,可是一个项目中,我有好几处都要使用,就只能复制粘贴。

那我不又成了cv程序员???

于是我继续开始封装,想把它以组件的方法进行封装。

cache.js,我给他放在了common文件夹内

 export function getCache(a){let b = '';console.log('a:'+a)uni.getStorage({key:a,success:(res)=>{console.log('res.data:'+res.data);b = res.data;return res.data;}})return b;
}

使用方法:

在需要使用这个函数的页面进行引入就好,方法类似于我们按需引入组件。

import {getCache} from 'common/cache.js'

使用的时候直接进行调用就好。

this.username = getCache('username')

记一次uniapp的踩坑经历相关推荐

  1. uniapp 引入阿里矢量图标库的详细步骤及踩坑经历

    uniapp 引入阿里矢量图标库的详细步骤及踩坑经历 首先在阿里矢量图标库选择自己喜欢的图标 加购物车如下图 点击右上角的购物车 添加到项目 这里有坑 首先你不选中在线链接 你是看不到 @font-f ...

  2. 记一次成功把Vue2后台项目改造成Vite2的踩坑经历

    文章目录 前言 一.项目背景 1.1.为什么要选择Vite 二.迁移前的准备 2.1.补全.vue后缀 2.2.移动public/index.html的位置 2.2.1.通过vite-plugin-h ...

  3. 【golang程序包推荐分享】分享亿点点golang json操作及myJsonMarshal程序包开发的踩坑经历 :)

    目录[阅读时间:约5分钟] 一.概述 1.Json的作用 2.Go官方 encoding/json 包 3. golang json的主要操作 二.Json Marshal:将数据编码成json字符串 ...

  4. GPCC安装以及踩坑经历

    gpcc安装以及踩坑经历 官方下载地址文档 https://network.pivotal.io/products/pivotal-gpdb#/releases/29190 安装开始之前 chown ...

  5. 一次kvm嵌套虚拟化踩坑经历

    女主宣言 嵌套虚拟化就是虚拟化环境里再次进行虚拟化,简单的说就是虚拟机里运行虚拟机,听起来有点递归的感觉.那是不是可以无限嵌套下去呢?递归有终结条件,否则无限递归下去资源耗尽,嵌套虚拟化嵌套层次越深复 ...

  6. springCloud项目不能向EurekaServer 注册多个EurekaClient时(端口不一致)方法及踩坑经历

    spring cloud 问题说明:springCloud项目不能向EurekaServer 注册多个EurekaClient时(端口不一致)方法及踩坑经历: 前提--->已经能够通过Eurek ...

  7. yolov5-4.0环境搭建,零基础小白都能看得懂的教程。YOLOv5搭建的最快搭建方式,踩坑经历详谈)yolov5/yolov4/yolov3/yolov3通>>>>>>>>>>>>>>>>>第一章

    第一章:python最新YOLOv5-4.0环境搭建,零基础小白都能看得懂的教程.YOLOv5搭建的最快搭建方式,踩坑经历详谈 环境准备: yolov5-4.0环境搭建整体说明 2,anaconda的 ...

  8. 记一次编译Cesium踩坑记录

    记一次编译Cesium踩坑记录 cd cesium npm install npm install express --save npm install compression --save npm ...

  9. 【踩坑经历】一次Asp.NET小网站部署踩坑和解决经历

    2013年给1个大学的小客户部署过一个小型的Asp.NET网站,非常小,用的sqlite数据库,今年人家说要换台服务器,要重新部署一下,好吧,虽然早就过了服务时间,但无奈谁叫人家是客户了,二话不说,上 ...

最新文章

  1. Mysql Proxy的安装配置详细教程
  2. 王者归来:分布式调度解决方案 ElasticJob 重启!
  3. 教你如何使用 OpenCV检测图像中的轮廓
  4. bootbox显示中文的按钮
  5. Hive常见面试问题(持续更新)
  6. 《Internet 路由结构(第2版•修订版)》一7.5 常见问题
  7. String | 263. Ugly Number
  8. android9开发者模式 s8,Android 9.0或加速Galaxy S8/9电池消耗 谨慎更新
  9. oracle中的hint是什么,SQL优化过程中常见Oracle中HINT的30个用法
  10. 从M个数中随机等可能的取出N个的问题
  11. python全栈_010_Python3基本数据类型--元组
  12. Openlayer:学习笔记之View
  13. 格林积分在多边形截面特性计算的应用
  14. 基于GetData和ArcGIS的地图数字化教程
  15. 什么相片可以两张弄成一张_美图秀秀怎么把两张图片合成一张?美图秀秀两张图片融合方法汇总_图形图像_软件教程_脚本之家...
  16. 研究生如何写好毕业论文?(上)【中国人民大学龚新奇】
  17. 2019已经很冷,2020年Android工作或更难找——进大厂面试必备基础技能
  18. 从零实践强化学习之连续动作空间上求解RL(PARL)
  19. 用 JAVA 实现微信第三方登录
  20. 前端 PC端兼容性问题总结

热门文章

  1. 条件转移指令(Transfer Conditionally)
  2. kindle 资源整理 (将持续更新)
  3. QStyle/DTK重绘Qt-GUI已有控件,举例QScrollBar
  4. oracle做全年日历表,Oracle之一份标准日历表的构建
  5. java红包雨_安排,新版Java开发企业年会之红包雨场景实战视频课程
  6. Android 安装最新版的Android Studio软件(最新版3.6)
  7. 1、第一列为姓名,第二列为语文成绩,第三列为数学成绩,编写一个程序,实现(1)按要求创建这样的文件 (2)读取文件中的信息并输出以下结果: ①分别求这个班数学和语文的平均分(保留1位小数)并输出
  8. qt如何编译以及设计手机APP------为女朋友设计的APP 初级
  9. Transformer、Bert、GPT简介
  10. 【安装】CentOS7 安装NodeJS详细教程