You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// 仅为 me 和 home 页面注册该路由中间件registerMiddleware(Logger,(ctx)=>{return['/pages/me/index','/pages/home/index'].indexOf(ctx.route.url)!==-1})// 注册多个中间件registerMiddlewares([Logger,Auth],(ctx)=>{return['/pages/me/index','/pages/home/index'].indexOf(ctx.route.url)!==-1})
tarojs-router-next
小程序的路由有什么问题
EventCannal
通信,事件的回调方法可读性差、耦合度高、只能在回调内部处理异常如何解决这些问题
允许我先向你介绍: tarojs-router-next,这是一个 Taro 的路由辅助库,他提供以下特性帮助你方便的解决上面的问题
1. 路由跳转的页面 url 没有类型提示容易输错
tarojs-router-next 不需要使用者手写页面 url,它会监听项目
src/pages
内容变化,自动为使用者生成对应的路由方法并附加到 Router 类上,比如以下列子:左边的页面结构会生成右边的 Router.to** 系列方法,全都挂在 Router 类上
2. 路由传参需要手动拼接参数、无法携带任意类型、任意大小的数据
tarojs-router-next 允许直接传递一个对象给
params
,它会把params
展开拼接到url
后面。并且还可以接收一个data
参数,data
可以传递任意类型、任意大小的数据。并且可以通过页面下的
route.config.ts
导出params
和data
的类型定义,这样生成的Router.to**
相关方法会带有类型提示3. 路由方法是异步的,页面通过
EventCannal
通信,事件的回调方法可读性差、耦合度高、只能在回调内部处理异常tarojs-router-next 的路由跳转会返回一个
Promise
,通过async/await
可以写出同步的写法,详细参考 同步的路由方法4. 路由跳转的鉴权等实现起来比较麻烦
自己实现路由的鉴权是比较麻烦的事情,而 tarojs-router-next 提供与 koa 使用一致的路由中间件功能,详细参考 路由中间件
注册一个路由中间件:
注册多个路由中间件:
有的时候我们希望某个中间件只为特定的页面工作,这个需求可以在中间件中增加判断条件来实现,但在中间件中做这些判断会使中间件的职能不够专一,并且这些判断逻辑无法在多个中间件中复用
怎么解决呢,我们可以在注册中间件时传递一个方法,将本来要写到中间件中的判断逻辑抽取到该方法中。在路由进入时该方法会被调用并传入当前路由的上下文,若方法返回 true 则为当前路由执行这些中间件
一个检查用户是否登录的中间件示例:
最后
完整的代码示例:React示例,Vue3示例
详细的文档:查看文档
The text was updated successfully, but these errors were encountered: