1 回答
TA贡献1836条经验 获得超4个赞
问题是您通过Background.vue. 不要那样做。将其包含在App.vue.
当路由更改时,<router-view />的内容将填充该路由组件的全新实例(在(或) 中的routes数组中设置)。所以,而不是:router/index.ts.js
<template>
<div id="app">
<router-view></router-view>
</div>
</template>
...你App.vue应该包含:
<template>
<div id="app">
<navigation />
<router-view />
</div>
</template>
如果您不想在页面更改时重新呈现页面的任何其他部分(某些侧边栏,可能是页脚),也请将它们包含在App.vue. 因此,使用页脚和侧边栏,它可能看起来像:
<template>
<div id="app">
<header>
<navigation />
</header>
<main>
<sidebar />
<router-view />
</main>
<footer />
</div>
</template>
当路线更改时,只会<router-view />重新渲染,并相应地执行路线上设置的动画。直接放置的其他布局元素App.vue将不会重新渲染。显然,如果您根据当前路由动态更改它们的内容,这些部分将会更新,但它们的基本 DOM 元素将保持不变。
隐含地,您应该<navigation />从您的视图中删除以及您决定直接放入的任何其他内容App.vue。
添加回答
举报