vue.js - 使用 beforeEnter 修改 Vue 查询
问题描述
场景:我正在用另一个应用程序替换一个应用程序 - 两者都有一个 /search 路由可能很长的查询。新的数据结构发生了很大变化,不幸的是,旧应用程序的一些 URL 已分发到其他地方,其中包含不再存在的多个参数。
处理此问题的一种方法可能是拦截每个搜索调用,并通过查找和替换有问题的术语进行beforeEnter()
修改。query
我会想到这样的事情:
{
name: "search",
path: "/search",
component: Records,
beforeEnter(to, from, next) {
let query = hackSearch(to.query); // replaces the old terms
next({name: 'search', query: query});
}
},
但是,这会导致Uncaught (in promise) InternalError: too much recursion
。但是,根据我对我所看到的文档和示例的理解,这个或类似的东西应该可以工作。
解决方案
这不是很好,但我进行了修改hackSearch()
,因此无论是否发现有问题的术语并替换它,它都会返回。这使得上面的代码可以修改如下:
{
name: "search",
path: "/search",
component: Records,
beforeEnter(to, from, next) {
let [query, modified] = hackSearch(to.query);
if (modified) {
next({name: 'search', query: query});
}
else {
next();
}
}
},
推荐阅读
- java - 如何在 DMClient CSP 中配置 PFN
- python - 使用 python 在 Web 中自动下载
- ubuntu - 删除 dhcp 后网络在 Ubuntu 18.04 中不起作用
- spring - 找不到方法登录错误 cuba 平台
- python - 如何选择具有特定属性类型的标签
- c# - 如何隐式定义扩展泛型参数
- javascript - 悬停时出现多个 vue 弹出框
- jenkins - Terraform Jenkins 集成 - 强制(绕过)自动审批流程
- javascript - JS输出选项选择值作为链接中的get参数
- jsf - p:galleria 在底部没有褪色,就像 PrimeFaces 展示页面上的情况一样