<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          使用 Vue 3.0,你可能不再需要Vuex了

          共 2425字,需瀏覽 5分鐘

           ·

          2020-07-30 21:10

          Vuex?是一個很棒的狀態(tài)管理庫。它很簡單,并與?Vue?集成的非常好。為什么會有人放棄?Vuex?? 原因可能是即將發(fā)布的?Vue3?版本公開了底層的響應式系統(tǒng),并介紹了構建應用程序的新方法。新的響應式系統(tǒng)非常強大,它可以直接用于集中的狀態(tài)管理。

          你需要狀態(tài)共享嗎?

          在某些情況下,多個組件之間的數(shù)據(jù)流轉變得非常困難,因此需要集中的狀態(tài)管理。這些情況包括:

          • 多個組件使用相同數(shù)據(jù)的
          • 組件深嵌套

          如果以上情況都不成立,答案很簡單,你不再需要狀態(tài)共享了。

          但是,如果你有以上一種情況呢?最直接的答案就是使用?Vuex?。這是一個久經(jīng)考驗的解決方案,而且效果不錯。

          但是,如果你不想添加其他依賴項或發(fā)現(xiàn)設置過于復雜怎么辦?新的?Vue3?版本以及?Composition API?可以通過其內置方法解決這些問題。

          新的解決方案

          共享狀態(tài)必須符合兩個條件:

          • 響應式:當狀態(tài)改變時,使用它們的組件也應更新
          • 可用性:可以在任何組件中訪問狀態(tài)

          響應式

          Vue3?通過眾多功能公開了其響應式系統(tǒng)。你可以使用?reactive?函數(shù)創(chuàng)建響應式變量(替代方法是?ref?函數(shù))。

          import?{?reactive?}?from?'vue';

          export?const?state?=?reactive({?counter:?0?});

          ?reactive?函數(shù)返回的?Proxy?對象是可以跟蹤其屬性更改的對象。在組件模板中使用時,當響應值發(fā)生更改時,組件都會重新渲染。