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。
添加回答
舉報