如果params
的名称是特定的,我想替换to
的{{1}}中的一个,而我不知道为什么这不起作用。
to
我在做什么错了?
答案 0 :(得分:1)
请不要将状态存储在meta
属性中。相反,您可以检查名称是否已编码:
function needsEncode(route) {
return route.meta && route.meta.encode && ( // <-- changes start here
decodeURIComponent(to.params.name) === to.params.name
) // <-- changes ends here
}
router.beforeEach(async (to, from, next) => {
if (to.name === 'Details Page' && needsEncode(to)) {
const toEncoded = Object.assign({}, to, {
// remove meta
//meta: {
// encode: false,
//},
params: {
name: encodeURIComponent(to.params.name),
id: to.params.id,
},
});
return next(toEncoded);
}
return next();
}
如果decodeURIComponent(to.params.name)
与名称相同,则尚未对其进行编码,您可以继续对其进行编码。