浏览模式: 标准 | 列表分类:Javascript
Submitted by gouki on 2022, March 30, 11:20 PM
为了方便开发,为navigatoTo和switchTab做了一个简单的封装,这样,其他开发人员就不用关心是跳到哪里去了。因为tab页只有5个(最大),所以优选用navigateTo,然后通过判断出错信息,再调用switchTab
然而就是在这个上面踩坑了。。。
开发者工具和IOS,在遇到tabbar页面的时候,出错信息是:{errMsg: "navigateTo:fail can not navigateTo a tabbar page"} ,毕竟,我是基于开发工具进行开发的,所以我直接偷懒。。。。。if (e.errMsg.includes('tabbar')),然后处理。
结果,在安卓上死活不能运行,我开始以为是url带了参数,去掉后发现还是不正常,于是我把出错信息打出来看一下,结果 发现,在android下,出错信息居然不一样。。它的出错信息是:{errMsg: "navigateTo:fail:can not navigate to a tab bar page"}。
看到不同点了么?
{errMsg: "navigateTo:fail can not navigateTo a tabbar page"}
{errMsg: "navigateTo:fail:can not navigate to a tab bar page"}
短短一行字,不同点居然有三处。。。我也是崩溃了,既然知道问题,那就好办了。无非就是判断 tabbar和tab bar了呗。只是,这种出错信息会不一致,让我很意外。。。
Javascript | 评论:0
| 阅读:4511
Submitted by gouki on 2022, March 26, 10:46 PM
如题,其实官网已经给出过说明,就三句话:详见(项目结构 | Vuex (vuejs.org))
- 应用层级的状态应该集中到单个 store 对象中。
- 提交 mutation 是更改状态的唯一方法,并且这个过程是同步的。
- 异步逻辑都应该封装到 action 里面。
简单明了。
Tags: vuex
Javascript | 评论:0
| 阅读:4464
Submitted by gouki on 2022, March 10, 8:08 AM
在使用UNIAPP进行开发的时候,component是经常要用到的,但在使用过程中会发现,经常用的onLoad/onShow无法被触发。而props在传进去时,data获取变量调用props时,也有延迟。
这时候的处理方法是参考uniapp的页面生命周期,可以看到,他本身也支持vue的各种常用方法,尝试用mounted,发现被触发了。
备注:created / destoryed 都能够被正常触发(这时候就不要迷信uniapp的一些用法了。)
至此问题解决。
Javascript | 评论:0
| 阅读:4930
Submitted by gouki on 2022, March 1, 10:28 PM
在使用UniApp进行小程序开发的时候,总是不可避免的会使用tabbar。在小程序中tabbar的页面和普通的页面不一样,比如,他对应的页面就始终含有tabbar,而其他页面则不显示tabbar(要显示只能用自定义组件)。而且切换页面的时候,只能用switchTab,而不能用navigateTo。
这些都是平时可以看得到和可以通过报错信息查看得到的(比如navigateTo跳到tabbar时,出错信息就是提示不能跳转到tabbar的页面)。
tabbar还有一些有意思的小特性,比如,tabbar对应的页面,不能是分包里的,只能含在主包里。tabbar打开后数据加载完,默认不再刷新。这个就带来不小的问题,比如电商的首页,加载后不刷新那就一直无法获取最新数据了。
通过查看uniapp的文档,发现App.vue除了常见的onLaunch/onShow/onHide等之外,还有什么onPageNotFound(这个平时不会触发,只有扫描、转发等才会触发,navigateTo等不会触发此事件)之类的。[应用生命周期:生命周期 - uni-app官网 (dcloud.io)]
而普通页面,常用事件就是onInit/onLoad/onShow/onHide/onUnload,除此之外还有:onResize/onPullDownRefresh/onReachBottom/onPageScroll,如果是页面点击事件,还有onTabItemTap/onShareAppMessage/onNavigationBarButtonTap/onBackPress【页面生命周期:生命周期 - uni-app官网 (dcloud.io)】
当注意到onTabItemTap事件后,就想起来,可以利用此事件进行操作:onTabItemTap(e){console.log(e);},打印这个e,可以看到他是一个Json对象,有三个主要的key:index/pagePath/text,index是针对Tabbar的索引 ,pagePath是当前Tab的路径,text是tabbar对应的文字。
于是就可以利用这个pagePath:
JavaScript代码
- onTabItemTap(e){
- uni.reLaunch({url:e.pagePath});
- }
偷懒的时候就可以直接这么做。
纯记录。
Javascript | 评论:0
| 阅读:5540
Submitted by gouki on 2022, February 13, 9:41 PM
以前没注意过,好象也没有发生过,最近在使用UniApp创建小程序的时候,运行几下就突然出现:[JS 文件编译错误] 以下文件体积超过 500KB,已跳过压缩以及 ES6 转 ES5 的处理。
很烦人,一旦出现这个错误,tab页几乎都是正常的。但无法跳转到其他页面,出错信息是xxxxpage not registed。
在开发者工具上设置过:Es6转为Es5,不启用。uniapp的manifest.json中,对微信小程序也是设置了,上传时压缩代码,但仍然不起作用。
这时候看一下,HbuilderX的运行菜单,运行->运行到小程序模拟器->运行时是否压缩代码,如果没有打勾,就打个勾。
----网上有提示,如果用cli创建的,则需要package.json中增加:
"dev:mp-weixin": "cross-env NODE_ENV=development UNI_PLATFORM=mp-weixin vue-cli-service uni-build --watch --minimize"
--
再次运行,正常了。
Javascript | 评论:0
| 阅读:6811