Redux學習筆記(一)

Redux是一種狀態管理工具,嚴格的單向數據流是redux架構的設計核心。Redux數據流的圖示如下:
redux數據流counter爲例

Action

action就是一個普通的javascript對象,它用來描述發生了什麼變化。按照約定,action 內必須使用一個字符串類型的 type 字段來表示將要執行的動作。多數情況下,type 會被定義成字符串常量。就像我們示例中的{type: 'INCREMENT'}{type: 'DECREMENT'}。除了type字段外,我們可以根據我們的需要增加字段。
爲了更好地移植,我們可以使用action生成函數,比如:

function add(number) {
	const action = {
		type: 'INCREMENT',
		number
	}
	return action
}

然後我們可以直接在store裏調用store.dispatch()來觸發state改變。

Reducer

reducer規定了如何響應action,並把變化後的結果返回給store。reducer是一個純函數,接收previousState(舊的state)和action,返回計算後得到的新state,在這個過程中不允許改變參數。例如:

function handle(state = initialState, action) {
	switch(action.type) {
		case 'INCREMENTNUMBERADD':
			return Object.assign({}, state, {
		        number: action.number
		    })
		    break
	    default:
	    	return state
	}
}

當state裏內容很多,且相互獨立時,我們可以對reducer進行拆分,這樣每個 reducer 只負責管理全局 state 中它負責的一部分。每個 reducer 的 state 參數都不同,分別對應它管理的那部分 state 數據。最後我們把這些reducer進行合成即可,redux中提供了一個工具類combineReducers()來做這個事情。

Store

store可以認爲是一個容器,redux中store是單一的,它的主要職責有:

  • 存儲state
  • 通過getState()方法獲取state
  • 通過subscribe()註冊監聽器
    我們可以通過createStore()這個函數來生成store。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章