<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>

          手摸手教你基于Hooks 的 Redux 實戰(zhàn)姿勢

          共 1689字,需瀏覽 4分鐘

           ·

          2020-11-25 09:38

          原文:Redux Crash Course with Hooks ?[1]?作者:Chris Achard 譯者:博軒 為保證文章的可讀性,本文采用意譯

          你對 Redux 感到困惑嗎?如果使用新的 Redux Hooks,會更加簡單!這里是一個關于 Redux 的速成班,將配合 React 函數(shù)組件使用:

          1.

          Redux 使您可以集中存放 JavaScript 應用程序的狀態(tài)(數(shù)據(jù))

          它最常與 React 一起使用(通過 react-redux )

          這使您可以從樹中的任何組件訪問或更改狀態(tài)。

          2.

          應用的狀態(tài)被集中存放于 Redux store

          該 store 是使用稱為 “reducer” 的函數(shù)所創(chuàng)建的

          reducer 接受一個 state 和一個 action , 并返回相同或的狀態(tài)

          3.

          使用 react-redux 中的?Provider?來為你的應用提供 store。

          使用?Provider?來包裝你的應用入口,以便應用程序中的任何組件都可以訪問 store 中的數(shù)據(jù)

          4.

          要從 store 中取出數(shù)據(jù),請使用 react-redux 提供的自定義 hook :useSelector?。

          selector?只是一個有趣的詞:“從 store 獲取數(shù)據(jù)的功能”

          然后,向?useSelector?中傳入回調(diào),該回調(diào)中可獲取整個 redux 的狀態(tài),您只需選擇該組件所需的內(nèi)容

          5.

          action 是普通的 JavaScript 對象

          所有 action 均應具有?“type”?鍵

          它們可能還具有其他鍵(參數(shù))

          6.

          Actions 不是“調(diào)用”的,而是“分配”給 reducer 的 Action 的?type?屬性告訴 reducer 接下來該做什么 (返回新狀態(tài)或舊狀態(tài))

          7.

          要更改 store 中的數(shù)據(jù),請首先編寫您的 reducer:

          reducer 通常使用?switch / case?語句編寫,但不是必要的

          他們只需要得到一個動作和一個狀態(tài),然后返回一個新狀態(tài)

          8.

          重要的是,reducer 返回一個新的狀態(tài)對象(而不是修改舊的對象的屬性),這樣,當對象中的屬性發(fā)生某些改變時,組件將重新渲染。

          不要在 reducer 中修改?state?中的值,僅返回一個值已經(jīng)更改的擁有新狀態(tài)的對象。

          9.

          要分派 action ,請使用 react-redux 中的自定義 hook:?useDispatch

          用一個 action 對象來調(diào)用?useDispatch

          將傳入?reducers?函數(shù)并運行,

          有可能改變應用的狀態(tài)

          10.

          所有連接的組件(調(diào)用 useSelector )將自動獲得新的狀態(tài)

          就像 props 或者 state 改變一樣 - useSelector 將自動檢測更改,React 將重新渲染組件。

          總結(jié)

          Redux 可以以更復雜的方式使用,但核心始終是:

          ?1、 向 store 發(fā)送 action?2、 通過 reducer 可能會或可能不會改變狀態(tài)?3、 使用選擇器訪問狀態(tài)?4、 狀態(tài)的改變將自動重新刷新您的應用

          ?

          codeandbox 示例代碼[2]

          References

          [1]?Redux Crash Course with Hooks ?:?https://dev.to/chrisachard/redux-crash-course-with-hooks-a54
          [2]?codeandbox 示例代碼:?https://codesandbox.io/s/redux-count-hrdtd?fontsize=14


          如果你喜歡探討技術,或者對本文有任何的意見或建議,非常歡迎加魚頭微信好友一起探討,當然,魚頭也非常希望能跟你一起聊生活,聊愛好,談天說地。魚頭的微信號是:krisChans95 也可以掃碼關注公眾號,訂閱更多精彩內(nèi)容。


          瀏覽 39
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  亚洲视频欧美视频日韩视频 | 青青草AV导航 | 大香蕉在线观看免费全集高清 | 亚洲AⅤ永久无码毛片牛牛影视 | 超碰997 |