Redux基礎(chǔ)知識

文檔:http://cn.redux.js.org/index.html

三大原則

  • 單一數(shù)據(jù)源 :整個應(yīng)用的state存儲在一棵object tree中,并且這個 object tree 只存在于唯一一個 store中
  • State只讀: 惟一改變 state 的方法就是觸發(fā) action( 是一個用于描述已發(fā)生事件的普通對象)
  • 使用純函數(shù)來執(zhí)行修改 : 編寫reducer描述如何改變state,Reducer 只是一些純函數(shù),它接收先前的 state 和 action,并返回新的 state

相關(guān)學(xué)習(xí)資料

如果需要關(guān)于 Redux 所有內(nèi)容的列表,推薦移步至 Awesome Redux。它包含了示例、樣板代碼、中間件、工具庫,還有很多其它相關(guān)內(nèi)容。
要想學(xué)習(xí) React 和 Redux ,React/Redux Links 包含了教程和不少有用的資源,Redux Ecosystem Links 則列出了 許多 Redux 相關(guān)的庫及插件。

基礎(chǔ)

Action

  • 是把數(shù)據(jù)從應(yīng)用傳到 store 的有效載荷。它是 store 數(shù)據(jù)的唯一來源。
  • action 內(nèi)必須使用一個字符串類型的 type (被定義成字符串常量)字段來表示將要執(zhí)行的動作.
  • 除了 type 字段外,action 對象的結(jié)構(gòu)完全由你自己決定
  • 我們應(yīng)該盡量減少在 action 中傳遞的數(shù)據(jù)

Reducer

  • Action只是描述有事情發(fā)生,Reducer指明如何更新State
  • 把所有數(shù)據(jù)放到一個對象里,每個數(shù)據(jù)以 ID 為主鍵,不同實體或列表間通過 ID 相互引用數(shù)據(jù)。把應(yīng)用的 state 想像成數(shù)據(jù)庫

永遠(yuǎn)不要在 reducer 里做這些操作:
修改傳入?yún)?shù);
執(zhí)行有副作用的操作,如 API 請求和路由跳轉(zhuǎn);
調(diào)用非純函數(shù),如 Date.now() 或 Math.random()

  • reducer 一定要保持純凈。只要傳入?yún)?shù)相同,返回計算得到的下一個 state 就一定相同。沒有特殊情況、沒有副作用,沒有 API 請求、沒有變量修改,單純執(zhí)行計算。
  • 不要修改 state, 使用 Object.assign() 新建了一個副本
  • 在 default 情況下返回舊的 state
  • 考慮reducer拆分,不要處理state放在一個方法里

Store

Store 有以下職責(zé):

  • 維持應(yīng)用的 state;

  • 提供 getState()
    方法獲取 state;

  • 提供 dispatch(action)
    方法更新 state;

  • 通過 subscribe(listener)
    注冊監(jiān)聽器;

  • 通過 subscribe(listener)
    返回的函數(shù)注銷監(jiān)聽器。

  • 關(guān)聯(lián)Action和Reducer

  • 創(chuàng)建Store:let store = createStore(reducer_name)

數(shù)據(jù)流

  • 嚴(yán)格的單向數(shù)據(jù)流是redux的核心

Redux 生命周期

  1. 調(diào)用 store.dispatch(action)
  2. store 調(diào)用傳入的 reducer 函數(shù)
  3. 根 reducer 應(yīng)該把多個子 reducer 輸出合并成一個單一的 state 樹 combineReducers()
  4. ** store 保存了根 reducer 返回的完整 state 樹**

React+Redux

  • 想通過 react-redux
    提供的 connect()方法將包裝好的組件連接到Redux。盡量只做一個頂層的組件,或者 route 處理。

發(fā)現(xiàn)阮一峰老師寫過關(guān)于Redux的文章,先收藏下:
Redux 入門教程(一):基本用法
Redux 入門教程(二):中間件與異步操作
Redux 入門教程(三):React-Redux 的用法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容