react的頁面應用越來越複雜,資料和狀態的管理也越來越複雜,甚至夾雜著ajax非同步請求對資料狀態的變更。不知從什麼時候開始——react框架的資料狀態的管理已經越來越難以控制和**!!
redux就是針對難以處理的資料管理,提出的一種解決方案。它能夠讓你的頁面的資料管理更輕鬆。
當問到為什麼要使用redux的時候,我覺得有一句話特別經典。
當你不知道為什麼要用redux的時候,那就不需要使用redux。。。
至於當你在你的專案中,關於資料管理方面,有你處理不了的情況出現時,這是時候才用redux。。。
redux認為,基於乙個web應用,資料和檢視是一一對應的關係!
而我們只需要維護乙個公有的store,當這個store變化時,檢視才跟著變化。
這是redux解決資料狀態管理的核心點!!!!
redux有非常好的官方文件文件位址。
可是大多數初學者讀這篇文件,讀的很困難!讀完還是不會redux!!
之前有react社群的乙個小伙這麼說過,redux學會很簡單,官方文件不細讀10遍,就別好意思說讀不懂,只是功夫沒下到!我聽了這樣的話,果然,我也會redux了。
我學習的過程中發現,redux的學習是乙個系統的過程,你不可能越過基礎概念,就能夠很快的敲出示例demo。我們大多數人的學習過程一般是——乙個循序漸進、逐步迭代的過程,而redux的學習卻不是這樣,你不看概念,就沒法理解示例demo,你不敲示例demo,你就無法完全理解redux的各種基礎概念。所以最終發現,redux的最好的學習方式就是,通讀乙個個的概念,敲出示例demo,再根據示例demo,反過來理解概念,迴圈往復,總能學的懂!!
1、store是什麼?
store是redux庫中的createstore方法,生成的乙個物件,這個物件中,儲存的就是我們的公有資料。
import from
'redux'
;const
store = createstore(fn);
其中fn就是createstore接受的乙個引數,這個引數是乙個函式,用來返回store物件儲存的資料物件。
2、state
store是乙個物件,但是要獲取這個物件中的所有儲存的資料,需要呼叫它的方法:store.getstate(),而state就是store.getstate()得到的資料。
import from
'redux'
;const
store = createstore(fn);
const
state = store.getstate();
3、action
redux認為,乙個state對應著乙個view,state改變,view跟著改變。對於使用者而言,接觸到的可能就只有view,所以redux需要提供一種使用者通過view,來更改state,從而讓view發生變化的東西。而這個東西就是action。
action用來描述的是使用者行為,它是乙個物件,redux通過dispatch這個action來更改state。至於dispatch是什麼,這個後面會說明。
var
action =
type是action定義的型別,是乙個必須屬性。
4、action creator
使用者的行為那麼多,僅僅用物件的方式來表示,顯得太麻煩!可以使用乙個函式的方式來描述action,就叫action creator。
//action creator
function
add(text)
}
5、store.dispatch()
我們定義好了使用者的行為,可是這個行為我們要怎麼才算觸發呢?
在redux中,觸發使用者行為的方式只有乙個store.dispatch(),這也是唯一一種更改資料的方式。
import
from 'redux'
;const
store = createstore(fn);
store.dispatch();
這裡的dispatch接受乙個action,進行觸發更改state的命令。
6、reducer
使用者進行dispatch了,資料要進行變化,可是這個變化的過程我們沒有描述,比如dispatch乙個action,我們還是不知道乙個數字是加一還是減一,又或者有其他的什麼操作,而reducer就是用來定義這種操作的過程的!!
const
defaultstate = 0
;const
reducer
= (state = defaultstate, action)
=>
};
這是乙個完整的reducer函式進行狀態變更的過程。
如果我接受的action為add型別,那麼我進行state+action.payload操作。
如果是預設的,我就直接返回state。
7、store.subscribe()
這個subscribe函式,是用來註冊乙個監聽函式的,每當state發生改變的時候,subscribe註冊的函式就會被觸發,這個被註冊的函式就是store.subscribe(listener)中的引數listener。
快速理解redux
本篇文章主要說明redux的基本原理以及如何使用 高階元件 觀察者模式 react基礎 wepy基礎 有vue基礎也可以 簡單的說,context就是乙個全域性變數,它可以被乙個高階元件及該高階元件的所有子元件,孫組建等等共享 舉個例子,下圖是乙個react頁面 由上面三圖可以看出,本應一層一層傳遞...
redux簡要理解
connect將props dispatch連線到元件上。provider基於store.subscribe 封裝,如果store發生變化,會自動更新store,觸發重渲染。如果不寫provider,需要手動監聽 更新render。index.js store.subscribe function ...
redux 初步理解
派發乙個 action 給 reducer,reducer 生成了乙個新的 state redux 通過 store 來儲存資料,store.getstate 獲得資料,而要更新 state,則需要 store.dispatch action 由於reducer 裡才會生成乙個新的 state,所以...