首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vue-路由器在路由更改时不呈现新组件

vue-路由器在路由更改时不呈现新组件
EN

Stack Overflow用户
提问于 2019-01-30 23:43:15
回答 1查看 4.2K关注 0票数 0

我有一个非常简单的最小示例页面与vue-路由器,这只是部分工作。

app.js

代码语言:javascript
复制
import 'babel-polyfill';
import Vue from 'vue';
import VueRouter from 'vue-router';
import App from './app.vue';
import router from './router'

new Vue({
    router,
    render: h => h(App)
}).$mount('#app')

app.vue

代码语言:javascript
复制
<template>
  <div class="container">
        <div id="nav">
          <router-link to="/">Page 1</router-link>|
          <router-link to="/page2">Page 2</router-link>
          <router-link to="/sretbs">No page</router-link>
        </div>
        <div style="border:5px solid green">
          <router-view></router-view>
        </div>
  </div>
</template>

<script>
export default {};
</script>

router.js

代码语言:javascript
复制
import Vue from 'vue'
import Router from 'vue-router'
import Page1 from './page1.vue';
import Page2 from './page2.vue';
import ErrorPage from './error.vue';

Vue.use(Router)

export default new Router({
  routes: [
    { path: '/page1', name: 'page1', component: Page1 },
    { path: '/page2', name: 'page2', component: Page2 },
    { path: '*', component: ErrorPage }
  ],
  redirect: {
    "/": "page1"
  }
})

<router-view>似乎在加载第一个页面时起作用。它显示了我对url中当前存在的任何路由所期望的组件(例如localhost/test#/page2),或者如果我在将Vue绑定到#app之前显式地使用route.push,它也会显示所期望的组件。

导航到其他路由似乎不能完全工作,或者至少它没有呈现新的路由。当我向页面组件添加调试输出时,如下所示:

代码语言:javascript
复制
<template>
  <div class="container">
    <h2>this is page 2</h2>
    <buttons></buttons>
  </div>
</template>

<script>
export default {
  beforeRouteEnter: function(to, from, next) {
    console.log(`Entering page 2:`);
    next();
  },
  beforeRouteLeave: function(to, from, next) {
    console.log(`Leaving page 2`);
    next();
  },
  beforeRouteUpdate: function() {
    console.log(`Before route update`);
  }
};
</script>

它正在获取routeenter/leave事件。我似乎可以在路由之间来回导航,但直到页面重新加载才能看到结果

我不能在jsfiddle中重现这个问题,我已经丢弃了所有东西并重新开始,但得到的结果是一样的。通过查看Vue Router documentation,我看不出我做错了什么。你知道我错过了什么吗?

EN

回答 1

Stack Overflow用户

发布于 2019-01-31 19:49:29

在这种情况下,答案是极其简单的。在页面的其他地方还有另一个Vue实例。尽管我的理解是绑定到不同容器元素的独立Vue实例应该能够和谐共存,但在这个实例中却并非如此,这也是破坏Vue开发工具的原因,例如,它显示了一个Vue实例,但没有显示任何已加载的组件,并在Vue开发工具错误中给出了Cannot read property '__VUE_DEVTOOLS_UID__' of undefined错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54444322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档