<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 切換控制流水線 為更好的理解路由切換的管道,假設我們一個啟用了路由的應用,此應用在路徑 `/a/b/c` 時渲染了三個嵌套的 `<router-view>` : ![](http://vuejs.github.io/vue-router/zh-cn/pipeline/01.png) 接著,用戶瀏覽新路徑 `/a/d/e` ,導致需要更新,渲染一個新的組建樹: ![](http://vuejs.github.io/vue-router/zh-cn/pipeline/02.png) 如何做到這些呢?這個過程包含一些我們必須要做的工作: 1. 可以重用組件 A ,因為重新渲染后,組件 A 依然保持不變。 2. 需要停用并移除組件 B 和 C 。 3. 啟用并激活組件 D 和 E 。 4. 在執行步驟2和3之前,需要確保切換效果有效 - 也就是說,為保證切換中涉及的所有組件都**能**按照期望的那樣被停用/激活。 使用 vue-router ,你可以控制通過實現切換鉤子函數來控制這些步驟。但是在了解如何做的細節之前,我們先了解一下大局。 ### 切換的各個階段 我們可以把路由切換分為三個階段: 1. **可重用階段:** 檢查當前的視圖結構中是否存在可以重用的組件。這是通過對比兩個新的組件樹,找出共用的組件,然后檢查它們的可重用性(通過 `canReuse` 選項)。默認情況下, 所有組件都是可重用的,除非是定制過。 ![可重用階段](http://vuejs.github.io/vue-router/zh-cn/pipeline/03.png) 2. **驗證階段:** 檢查當前的組件是否能夠停用以及新組件是否可以被激活。這是通過調用路由配置階段的 `canDeactivate` 和 `canActivate` 鉤子函數來判斷的。 ![驗證階段](http://vuejs.github.io/vue-router/zh-cn/pipeline/04.png) 注意,`canDeactivate` 按照從下至上的冒泡順序檢查,而 `canActivate` 則是從上之下。 任何一個鉤子函數都可以終止界面切換。如果在驗證階段終止了界面切換,路由器會保持當前的應用狀態,恢復到前一個路徑。 3. **激活階段:** 一旦所有的驗證鉤子函數都被調用而且沒有終止切換,切換就可以認定是合法的。路由器則開始禁用當前組件并啟用新組件。 ![激活階段](http://vuejs.github.io/vue-router/zh-cn/pipeline/05.png) 此階段對應鉤子函數的調用順序和驗證階段相同,其目的是在組件切換真正執行之前提供一個進行清理和準備的機會。界面的更新會等到所有受影響組件的 `deactivate` 和 `activate` 鉤子函數執行之后才進行。 `data` 這個鉤子函數會在 `activate` 之后被調用,或者當前組件組件可以重用時也會被調用。 接下來我們會談論一下切換過程中各個鉤子函數的細節。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看