问题标签 [vue-router4]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
vue.js - vue-router@next 中不存在 onBeforeEnter
我正在尝试切换到 vuejs3 和新的 vue-router。
现在我看到 beforeRouteEnter 没有暴露:
所以我的问题是:如何像/dashboard
以前一样在特定路线上触发初始 axios 请求?
vue.js - VueJS-3 如何渲染 从Vue路由器?
在 vuejs 2 中,我可以通过返回渲染 html 标记直接在路由器中渲染。我正在尝试使用 vue-router 4 在 vue3 中做同样的事情,但它似乎不起作用:
知道如何让组件呈现该路由器视图并允许我使用我的子路由吗?我宁愿不加载单个组件只是为了容纳“”。这在 vue-router 3 中完美运行,不知道 4 有什么问题。我也在从“vue”导入 {h}。
vue.js - Vue 3.0 路由器组件转换不适用于 mode="out-in"
我用 vue 3.0 和 vue-router 4.0 构建了一个应用程序。
我的App.vue
组件中有这个非常简单的代码(第一个渲染组件):
第一页是渲染器 - 没问题。但是一旦我导航到另一个页面,页面就会变成空白。如果我删除mode="out-in"
它,它会起作用(但过渡很丑陋)。
有谁知道为什么?
javascript - 在 Vue3 和 vue-router4(next) 的 setup() 中使用 useRoute() 时,路由查询未定义
我将 Vue3 与 vue-router 4.0.5 一起使用,我遇到了一个问题,即 useRoute() 似乎可以正确检索路由,但路由的查询未定义,即使存在查询。
对于路径/search?q=vue
,它预期searchQuery
等于vue
,但它返回未定义。
在模板中,{{ $route.query.q }}
正确返回查询值。
登录到控制台时,该route
对象被正确记录并包含路由的查询对象,但searchQuery
未定义。
我想知道为什么searchQuery
在这个例子中返回未定义。
vue.js - Vue Router 不保留在地址栏中输入的 URL
所以我有一个在历史模式下运行的 Vue 路由器。单击时它可以完美运行<router-links>
,但我无法让地址栏导航“粘贴”。尽管加载了正确的页面内容,该地址始终会恢复到之前的 URL。
您可以通过运行vue create projectName
并选择Manually select features
-> Router
-> Vue 3.x
->自己复制它Use history mode (Y)
。这将创建下面的示例项目。
如果您导航到http://localhost:8080/about
,将加载 About 视图。正确的。
现在,如果您键入http://localhost:8080/
,主页视图会加载,但 URL 会恢复为/about
!
如果您http://localhost:8080/about
再次键入,则会发生完全相反的情况。
我做错了什么,还是这是 Vue Router 4 中的错误?
javascript - 使用相同子组件的两条不同路线正在以不同的方式评估数据
使用 Vue3 和 vue-router4,两个不同的组件共享同一个子组件。组件模板设置如下:
这些是配置的路由:
组件中设置了一些数据Child
:
以上旨在selected
根据是否在路由中找到匹配项来设置为 true 或 false。然后将结果FilterResults
作为道具传递给:
通过以上,selected
过滤器数据中的值被评估,预期结果是当组件加载时,$route 中的过滤器在true
数据中设置为。
问题是, 和 的子组件ComponentA
是ComponentB
相同的:
ComponentA
/componenta/xyz?size=1m
无法按预期工作,其中在路由中找到的匹配项未true
在filters
数据中设置为。ComponentB
/componentb?size=1m
确实按预期工作,其中在路由中找到的匹配项设置为true
数据中filters
。
vue.js - Vue 3 嵌套路由
给定以下路线:
},
为什么这样做(仪表板组件可见):
但这不会:
在一种情况下,URL 有一个斜杠,而在另一种情况下则没有。我在文档的某处读到这是来自 Vue2 的重大变化。请参阅: named-children-routes-with-an-empty-path-no-longer-appends-a-slash
所以这里真正的问题可能是:我怎样才能让我的工作子导航(带重定向)同时仍然能够使用路由名称而不是路由 url 部分进行导航。
vue.js - 将对象作为参数传递给 router.push (vue-router@4.05)
问题
router.push({name:"Order", params: {obj: {}})
推送失败obj: {}
,而是路由接收obj: '[object Object]'
情况
我有这样的路线设置
这导致 props 没有被定义Order.vue
预期结果
基于这个答案对象在旧版本中工作
我测试过的
我用 jest 来检查传递给的参数router.push
,它们看起来应该是这样的:{name:"Order", params: {obj: {}}
有任何想法吗?
vue.js - 使用 vue-router 4 的点击方法
使用 vue-router 3,可以添加一个方法router-link
,@click.native="myMethod"
就像这里解释的那样。
在 vue 3 中,该.native
修饰符已被弃用。
当用户点击 时<router-link to="somewhere" @click="myMethod">Click me</router-link>
,它会创建一个错误,整个应用程序会重新加载。
使用vue-router 4router-link
,点击标签时触发方法的正确方法是什么?