firebase - VueRouter/Firebase:在浏览器中输入的 URL 仅在输入两次时才会呈现动态路由
问题描述
我试图让 vue-router 在访问根 url 时重定向到由 Firebase 文档 id 构造的动态 url,如下所示:
const routes = [
{
path: "/",
beforeEnter: async () => {
let acuerdos = await db.collection("acuerdos").orderBy("fecha", "desc").get()
let ultimoAcuerdo = acuerdos.docs[0].id
router.push({ path: `/acuerdos/${ultimoAcuerdo}`})
}
}
在大多数情况下,这很好用。唯一的问题是,当重定向完成(例如 to /acuerdos/18-06-2020
)并呈现视图时,如果我想输入另一个 url(例如 to /acuerdos/11-06-2020
),它什么也做不了;但是如果我在同一个 url 上再次按回车,它会工作得很好。
作为记录,我曾经在从一条动态路径导航到另一条动态路径时遇到类似的问题,即使是在应用程序<router-link>
的<router-view :key="$route.fullPath"/>
. 所以也许答案是为key
路由设置一个类似的道具,但我不知道如何从路由器的index.js
文件中做到这一点。
感谢您的任何指点!
解决方案
希望路由在路由器配置中定义;我在代码沙箱中复制了类似的东西,我能够让它工作。
唯一的区别是我在警卫中使用了该next
方法,因为我不确定您从哪里获取路由器对象。router.push
beforeEnter
beforeEnter(to, from, next) {
next({ path: "/acuerdos/01-01-2001" });
}
你可以在这里试试
作为旁注,我更喜欢使用命名路由进行路由,因为它看起来更干净并且在我个人看来更可靠,
next({
name: 'Acuerdos',
params: {
date: ultimoAcuerdo
}
})
这样即使路由路径发生变化,您的代码也不会中断。
推荐阅读
- c - C 从中缀字符串中提取数字
- python - 过滤以 csv 命名的图像
- php - 无法识别“提交表单”的 isset() 函数
- yaml - Jinja2 模板:rejectattr 属性等于不工作
- html - 为什么我的表格高度不会缩小到 170 像素以下?
- javascript - 无法将 GeoJSON 转换为 TopoJOSN
- python - 带有多个数字的pyplot figsize
- android - 为 Xamarin Android 应用程序构建通知
- javascript - JS中根据动态对象和值过滤数组
- javascript - Express.js 抛出错误;// 重新抛出非 MySQL 错误