const store =
createstore
(reducer,
[preloadedstate]
, enhancer)
;
直接返回當前currentstate,獲取state值,@return state(我覺得應該深轉殖乙個新的物件返回,不然有可能會被外部修改)
function
getstate()
// console.log(currentstate);
return currentstate;
}
執行派發行為,就會在內部執行reducer並且執行之前準備發布的函式listener ,@params action行為,@return action行為
function
dispatch
(action)if(
typeof action.type ===
'undefined')if
(isdispatching)
tryfinally
var listeners = currentlisteners = nextlisteners;
for(
var i =
0; i < listeners.length; i++
)return action;
}
redux發布訂閱
function
subscribe
(listener)
if(isdispatching)
var issubscribed =
true
;ensurecanmutatenextlisteners()
; nextlisteners.
push
(listener)
;//把函式壓入棧
return
function
unsubscribe()
if(isdispatching)
issubscribed =
false
;ensurecanmutatenextlisteners()
;var index = nextlisteners.
indexof
(listener)
; nextlisteners.
splice
(index,1)
;//刪除陣列裡面的函式,如果連續刪除容易造成陣列塌陷
currentlisteners =
null;}
;}
如果有錯,望大佬指出。。。 Redux原始碼解析
輸出 複製 這些函式會呼叫到閉包裡面的一些變數,如currentstate,currentreducer,currentlisteners。作用 將action和state傳入reducer並修改對應的state,並執行listeners陣列裡面的所有listener 核心就是這句 currents...
redux原始碼解讀
背景 因為就得去實習了。所以打算開始補補坑。比如自己閱讀原始碼的計畫。所以今天來聊聊redux的原始碼。後續會有redux thunk和react redux的原始碼閱讀。搞定這些的話,就開始閱讀乙個node的庫的原始碼了,比如eventproxy和anywhere。開始檔案看起來貌似不少,其實,要...
redux原始碼解析
關於redux的基本概念和工作流如何進行的這裡就不進行過多概述了,可以檢視相關文件去了解。流程圖鏈結 以下是redux的原始碼結構圖,主要的就是以下幾個檔案組成,我們接下來按順序進行介紹其中原理和實現過程。首先了解下createstore.js。通過呼叫createstore建立唯一的store,s...