首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vue-router如何持久化导航栏?

vue-router如何持久化导航栏?
EN

Stack Overflow用户
提问于 2017-11-22 18:10:00
回答 1查看 12.8K关注 0票数 12

我正在学习来自React的Vue,并且想知道保持导航栏的正确方式是什么-我在导航栏上有路由器链接。

我有一个带有路由器链接的导航栏组件,它可以工作,但它在前往另一个路由时正在重新加载。有没有一种方法可以在主体组件之外持久化它?例如,在前往新路线时不会重新呈现?

我试着把它放在路由器视图之外,但它在任何地方都不能渲染:

代码语言:javascript
复制
<template>
  <div id="app">
    <topnavbar>
    </topnavbar>
    <router-view>
    </router-view>
  </div>
</template>

如果它进了里面也一样。

如何持久化导航栏?它是否应该是路由器中所有组件的父组件,或者最佳实践是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-22 19:59:11

你的导航栏应该在router-view之外渲染,这里是如何设置它的(你可能已经做了很多)。

首先,从一个基础应用开始,它为你的所有路线提供服务:

App.vue (基础应用)

代码语言:javascript
复制
<template>
  <topnavbar />
  <router-view />
</template>

<script type="text/javascript">
  import topnavbar from './topnavbar.vue'
  export default{
    components:{
      topnavbar // register component
    }
  }

</script>

现在,您需要做的就是设置路由器并将基础应用程序挂载到主Vue实例:

app.js

代码语言:javascript
复制
import Vue from 'vue'
import VueRouter from 'vue-router'
import App from ''./components/App.vue // import the base component

Vue.use(VueRouter);

// import views you want to serve up in `router-view`
import Foo from './components/views/Foo.vue' 
import Bar from './components/views/Bar.vue' 

const routes = [{
    path: '/foo',
    component: Foo
  },
  {
    path: '/bar',
    component: Bar
  },
]

const router = new VueRouter({
  mode: 'history',
  routes
})

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

这应该可以把所有东西都准备好了。现在,为了确保导航栏不会刷新,请确保使用router-link而不是锚定标记:

Topnavbar.vue

代码语言:javascript
复制
<div id="topnav">
  <ul>
    <li><router-link to="foo">Foo</router-link></li>
    <li><router-link to="bar">Bar</router-link></li>
  <ul>
</div>

这应该会在你的应用程序中提供组件,而不会在你每次导航到不同的页面时重新呈现topnavbar

这是JSFiddle:https://jsfiddle.net/ukoebmwo/

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

https://stackoverflow.com/questions/47431867

复制
相关文章

相似问题

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