redux基礎整理

2021-10-08 04:13:17 字數 3649 閱讀 5416

設計和使用原則

基本概念

1.store

store 就是儲存資料的地方,相當於乙個容器,整個專案只能有乙個 store。

redux 提供createstore這個函式,用來生成 store。

import

from

'redux'

;const store =

createstore

(fn)

;//createstore函式接受另乙個函式作為引數,返回新生成的 store 物件。

2.state可以通過store.getstate()拿到。

import

from

'redux'

;const store =

createstore

(fn)

;const state = store.

getstate()

;

3.actionstate 的變化,會導致 view 的變化。view 發出的通知action ,表示 state 即將發生變化。

action 是乙個物件,其中的type屬性是必須的,是 action 的名稱,其他屬性可以自由設定。

const action =,}

;

action 的名稱是user_login,它攜帶的資訊是username,password。

action 描述了當前發生的事情。改變 state 的唯一辦法,就是使用 action,它會把資料運送到 store。

4.action creator

view 要傳送多少種訊息,就會有多少種 action。定義乙個函式來生成 action,這個函式就叫 action creator。

const

user_login

='使用者登入'

;function

userlogin

(text)

}const action =

userlogin()

;

上面**中,userlogin函式就是乙個 action creator。

5.store.dispatch()

store.dispatch():傳送action。

import

from

'redux'

;const store =

createstore

(fn)

;store.

dispatch(}

);

上面**中,store.dispatch接受乙個 action 物件作為引數,將它傳送出去。

加上action creator,這段**可以改寫如下:

store.

dispatch

(userlogin()

);

6.reducerstore 接收到 action 之後,必須返回乙個新的 state,這樣 view 才會發生變化。

這種 state 的計算過程就叫做 reducer。

reducer 是乙個函式,它接受 action 和當前 state 作為引數,返回乙個新的 state。

const

reducer

=function

(state, action)

;

整個專案的初始狀態,可以作為 state 的預設值。如圖:

補充:fromjs()

immutable.js 的api。

作用:將乙個js資料轉換為immutable型別的資料

用法:fromjs(value, converter)

簡介:value是要轉變的資料,converter是要做的操作。第二個引數可不填,預設情況會將陣列準換為list型別,將物件轉換為map型別,其餘不做操作。

7.純函式

reducer 函式最重要的特徵是,它是乙個純函式。也就是說,只要是同樣的輸入,必定得到同樣的輸出。

由於 reducer 是純函式,就可以保證同樣的state,必定得到同樣的 view。但也正因為這一點,reducer 函式裡面不能改變 state,必須返回乙個全新的物件。

// state 是乙個物件

function

reducer

(state, action)

, state,);

// 或者

return;}

// state 是乙個陣列

function

reducer

(state, action)

最好把 state 物件設成唯讀。你沒法改變它,要得到新的 state,唯一辦法就是生成乙個新物件。這樣的好處是,任何時候,與某個 view 對應的 state 總是乙個不變的物件。

8.store.subscribe()

store 允許使用store.subscribe方法設定監聽函式,一旦 state 發生變化,就自動執行這個函式。

import

from

'redux'

;const store =

createstore

(reducer)

;store.

subscribe

(listener)

;

拆分reducer根reducer的結構完全可以自己決定。redux原生提供combinereducers()輔助函式,來把根reducer拆分成多個函式,用於分別處理state樹的乙個分支。

**示例如圖:

redux工作流程:

如圖:可以理解為乙個借書的人,首先他要知道自己要借什麼書(action creators),然後把書名告訴圖書館管理員(store),圖書館管理員去檢視記錄本(reducers),去查詢這本書的位置。找到之後圖書館管理員知道後(newstate)再告訴這個人書位置的資訊(重新渲染view)。

1.呼叫store.dispatch(action),傳送action。

2.store會把兩個引數傳入reducer:當前的state樹和action,並返回乙個新的state。

3.state一旦有變化,store就會呼叫監聽函式。

4.listener可以通過store.getstate()得到當前狀態,重新觸發渲染view。

redux 個人整理

閱讀了redux的文件後,並參與了乙個練手專案r music的部分開發後,通過自己的理解,整理了這篇文件。初學,所以一定會有不詳或者錯誤的地方。開發這個專案,我參閱的學習文件如下 react redux提供的provider元件,可以讓容器元件取得state。src index.js import ...

redux入門基礎

1.redux 適用場景 多互動,多資料來源。2.從元件角度看,如果你的應用有以下場景,可以考慮redux 某個組建的狀態需要共享 某個狀態需要在任何地方都可以拿到 乙個元件需要改變全域性狀態 乙個元件需要改變另乙個元件的狀態 3.設計思想 web應用是乙個狀態機,檢視與狀態一一對應 所有物件都儲存...

redux概念 基礎

demo 基於react 提取碼 b36i demo網盤位址 1 單一資料來源 2 state是唯讀的 3 使用純函式來執行修改 1 定義及注意點 2 寫法 新增新 todo 任務的 action 是這樣的 const add todo add todo 當應用規模越來越大時,建議使用單獨的模組或檔...