onPageNotFound踩坑

记录一下学习微信小程序开发:

onPageNotFound(Object object)
基础库 1.9.90 开始支持,低版本需做兼容处理。
小程序要打开的页面不存在时触发。也可以使用 wx.onPageNotFound 绑定监听。注意事项请参考 wx.onPageNotFound。

参数:与 wx.onPageNotFound 一致

示例代码:

App({
onPageNotFound(res) {
wx.redirectTo({
url: ‘pages/…’
}) // 如果是 tabbar 页面,请使用 wx.switchTab
}
})

在app.js中配置onPageNotFound,自测时选择在另一个页面绑定一个事件去跳转一个不存在的页面,onPageNotFound在app.js和index.js的回调都没有执行到,只报了路由找不到的错误。
原因:在路由层还未成功跳转,直接报错,路由没有到不存在的页面,所以没有触发onPageNotFound,想验证是否生效,直接在小程序编译模式中添加一个不存在的页面路由进行跳转即可。
缺点:因为小程序中有执行优先级的问题,即index.js>app.js,会先执行index.js中的代码再执行app.js中的代码,这就导致在app.js中路由跳转前可能会先展示index.js中的视图。
改进:最好是在路由层直接跳转,即没有匹配上配置好的路由路径的话直接全部跳转404页面,这样既不会报错,也不用考虑优先级问题,直接在路由层就处理了。

你可能感兴趣的:(前端,微信小程序,小程序)