【发布时间】:2020-12-11 18:34:10
【问题描述】:
我有一个页面,其中包含一个路由器视图组件。我在父页面中还有一个按钮,当我单击它时,我会执行 router.push() 并通过参数将一些对象发送到命名路由。它工作得很好。但是,如果用户单击 F5 进行页面刷新,我显然无法再将必要的对象发送到我命名的路由,因为我无法捕获页面刷新。我已经对其进行了调试,并且命名的路由组件在我的父页面被挂载之前被挂载,并且似乎没有任何方法可以通知我的路由中的组件它需要来自父级的对象。是否不希望路由与父组件紧密耦合?谢谢。
-- Parent component --
<button v-on:click="buttonClick">Get Tests</button>
<router-view></router-view>
...
const router = new VueRouter({
mode: history,
routes: [
{
path: "/school/:id/tests",
name: "tests",
component: testcomp,
props: true
}]
});
new Vue ({
router,
methods: {
buttonClick: function()
{
// ajax call to get tests
// promise return
.then( ret =>
{
router.push(
{
name: "tests",
params: {
allTests: ret.tests,
id: 99,
}
});
})
},
},
});
-- Child component --
...
props : {
allTests: []
},
mounted: function()
{
// fill in table with this.allTests
}
【问题讨论】:
-
你是如何通过道具发送对象的?如果你能提供你所做的代码示例,那就太好了。
-
我假设您的路线有 userId 参数,例如
users/:id?由于路由可以刷新以根据具有相同用户 ID 的对象获取数据?并且 vue-router 启用了位置历史记录模式,所以我这方面的数据即使页面刷新也没有错。 -
@JonathanAkweteyOkine 我添加了一些简化代码
标签: vue.js vue-router