iT邦幫忙

2021 iThome 鐵人賽

DAY 29
0
自我挑戰組

React自我學習心得30天~系列 第 29

Day29 Redx初步介紹

使用目的

隨著時代的進步,人們對單一頁面的要求日漸複雜化,從過去的靜態頁面,到後來需要包括伺服器回應和快取的資料,以及本機建立而尚未回傳到伺服器等資料,為了完成這些需求,需要一個更複雜的State去管理,而Redux便是為了解決此問題出現的工具,它藉由強加某些限制在更新發生的方式和時機上,讓 state的變化更有可預測性。

三大原則

  1. 唯一真相來源
    將整個將整個應用程式的state,儲存在一個樹狀物件裡面,redux給他一個名字叫store。這可以讓從伺服器來的state可以更系統化的管理,並且可以儲存開發期間應用程式的state,這可以幫助開發人員更快速的完成復原需求。
console.log(store.getState())

/* Prints
{
  visibilityFilter: 'SHOW_ALL',
  todos: [
    {
      text: 'Consider using Redux',
      completed: true,
    },
    {
      text: 'Keep all state in a single tree',
      completed: false
    }
  ]
}
*/

2.State 是唯讀的
唯一一個改變state的方式是發出一個action,action為一個描述發生什麼事的物件。集中管理並儲存所有發生變化的action,之後debug或測試時可以用。

store.dispatch({
  type: 'COMPLETE_TODO',
  index: 1
})

store.dispatch({
  type: 'SET_VISIBILITY_FILTER',
  filter: 'SHOW_COMPLETED'
})

3.變更被寫成 pure function
若要指定store用哪個action來改變的話,必須寫 pure reducer。reducer是一個pure function,它會先取得先前的 state 和一個action,並回傳下一個state。


上一篇
Day28 客製化Hook
下一篇
Day30 Redux基礎練習
系列文
React自我學習心得30天~30

尚未有邦友留言

立即登入留言