nativescript - 在 Nativescript/angular 中处理反向路由的推荐方法?
问题描述
随着我们的页码增加,我开始遇到防止重复框架的困难,尤其是在使用侧抽屉时。如果我导航 A -> B -> A,我将得到 3 个实例,A 的 2 个和 B 的 1 个。这意味着我必须以某种方式确定导航是真正的导航还是“backToPreviousPage”。
理想情况下,我应该能够输入一条路线,它会智能地决定要做什么,例如:
router.navigate(['A'])
router.navigate(['B'])
router.navigate(['A'])
应该等于 A - 导航 -> B - backToPreviousPage -> A
现在,我的计划是提供一项服务来记录导航到的最后一条路线。这样我就可以只做 myService.navigate() ,它会根据当前路由是否与前一个匹配,自动决定是否应该进行真正的导航或使用 routerExtensions.backToPreviousPage() 。
不过,在我这样做之前,我想确保没有一些明显的方式我应该处理这个问题。这种做法似乎是一种肮脏的方式。在我看来,Nativescript 路由器似乎应该默认处理这个问题,但我已经确认我的 A -> B -> A 场景会重新运行 ngOnInit,而且我还没有看到任何可能导致这种情况发生的选项。
解决方案
页面路由器出口应跟踪堆栈/历史记录中的内容。根据 url 段,您可以决定是要导航回还是导航到新组件。
constructor(pageRouterOutlet: PageRouterOutlet) {
// `outlet` is private
(<any>pageRouterOutlet).outlet.states.forEach((state) => {
console.log(state.segmentGroup);
});
}
推荐阅读
- javascript - 我如何操作这个字符串
- reactjs - 在 React Native 的 HTTP 请求中将对象列表作为正文发送
- php - 如何在 PHP 中显示表单?
- c++ - 使用 InfluxdbV2.h 将 ESP32 数据写入 Influxdb 会出现 NULL 错误
- mysql - 将可变长度整数加载到 MySQL 表中的问题
- post - Swift - 错误:套接字 SO_ERROR [61:连接被拒绝]
- discord.js - 获取用户在频道中提及的次数
- laravel - 标记每个资源的重叠事件(FullCalendar 5,Laravel 7)
- ios - 从 `URLSession.dataTaskPublisher` 接收任务进度
- android - 是否可以在 android 设备上构建推送通知的文本?