当前位置:网站首页>Some problems with passing parameters of meta and params in routing (can be passed but not passed, empty, collocation, click to pass multiple parameters to report an error)
Some problems with passing parameters of meta and params in routing (can be passed but not passed, empty, collocation, click to pass multiple parameters to report an error)
2022-08-04 21:08:00 【Delete your code in the middle of the night】
When a routing object does not need to display a component, it can be set through meta
No Footer is required for login and registration, it can be solved by routing meta configuration
The path judgment can be obtained from the route, but it is troublesome
Through the routing configuration, configure the meta settings in the routing object to do it
{
path:'/login',
component:Login,
// Meta setting object, which can configure any data you want to match
meta:{
isHidden:true
}
},
Question 1:
Can I use the combination of path and params configuration when specifying the params parameter? (object writing)
Cannot use the combination of path and params configuration,
only use the combination of name and params configuration
queryConfiguration can be combined with path or name
Question 2:
How to specify whether the params parameter can be passed or not?
Path: '/search/:keyword?'
Question 3:
If you specify the name and params configuration, but the data in params is a "", you cannot jump, and the path will be a problem
The premise is that the routing params parameters can be passed or not
Solution 1: Do not specify params
Solution 2: Specify the params parameter value as undefined
Question 4:
Can routing components pass props data?
Yes: You can map/convert the query or params parameters into props and pass them to the routing component object
Implementation: props: (route)=>({keyword1:route.params.keyword, keyword2: route.query.keyword })
Question 5:
vue_router version 3.1.0 and above introduces the syntax of promise:
If we pass parameters without modifying the parameters and click multiple times at the same time, such an error will be thrown
Uncaught (in promise) NavigationDuplicated, the reason isThe internal promise is failed, and we didn't deal with it. Solution 1: Downgrade version, not good. Solution 2: Process the failed promise and add .catch(() => {}) after the push callNot good, I have to add it every time, trouble
Solution 3: Modify the source code, once and for all
The push method has three parameters:
1. The matching route (can be a route path string or a route object)
2. Successful callback
3. Failed callback
The push method wants to not report an error
vue-router.esm.js?3423:2065 Uncaught (in promise) NavigationDuplicated:
Avoided redundant navigation to current location: "/search/aa?keyword1=AA".
When passing parameters, at least one of the callbacks for success and failure must be passed
According to the source code analysis, if at least one processing function is passed, then the intervention of promise will not be triggered. If none are passed, then
Promise intervention will be introduced, and if we do not handle the failed callback function, an exception will be thrown and an error will be reported
if (!onComplete && !onAbort && typeof Promise !== 'undefined') {
return new Promise(function (resolve, reject) {
this$1.history.push(location, resolve, reject);
});
} else {
this.history.push(location, onComplete, onAbort);
} }
Configure in the router
// The method called by this.$router.push is the following method// 1. Save the previous push method to prevent the loss of later modificationsconst originPush = VueRouter.prototype.pushconst originReplace = VueRouter.prototype.replace// 2. Modify the push method on the prototype, so that when I call it later, my modified push method is calledVueRouter.prototype.push = function(location, resolved, rejected) {if(resolved === undefined && rejected === undefined){return originPush.call(this,location).catch(() => {})}else{return originPush.call(this,location,resolved,rejected)}}VueRouter.prototype.replace = function(location, resolved, rejected) {if(resolved === undefined && rejected === undefined){return originReplace.call(this,location).catch(() => {})}else{return originReplace.call(this,location,resolved,rejected)}}边栏推荐
- 知识分享|如何设计有效的帮助中心,不妨来看看以下几点
- 链栈的应用
- dotnet enables JIT multi-core compilation to improve startup performance
- 实战:10 种实现延迟任务的方法,附代码!
- 顺序队列
- buu web
- 【1403. 非递增顺序的最小子序列】
- DSPE-PEG-Aldehyde,DSPE-PEG-CHO,磷脂-聚乙二醇-醛基一种疏水18碳磷脂
- [Academic related] Tsinghua professor persuaded to quit his Ph.D.:I have seen too many doctoral students have mental breakdowns, mental imbalances, physical collapses, and nothing!...
- 88.(cesium之家)cesium聚合图
猜你喜欢
随机推荐
C语言之实现扫雷小游戏
五分钟入门文本处理三剑客grep awk sed
LayaBox---TypeScript---举例
【debug】postgres数据存储错乱
Spss-系统聚类手算实操
【PCBA方案设计】握力计方案
composition-api
STM32MP157A驱动开发 | 01- 板载LED作为系统心跳指示灯
js数据类型、节流/防抖、点击事件委派优化、过渡动画
Feign 与 OpenFeign
IPV6地址
Tear down the underlying mechanism of the five JOINs of SparkSQL
xss课堂内容复现
ts集成和使用
LayaBox---知识点
vim clear last search highlighting
matlab 画图
OD-Model【6】:YOLOv2
Oreo domain name authorization verification system v1.0.6 public open source version website source code
机器学习_02









