揭秘Redux(1): 自動機
其實是標題黨,Redux這麼簡單的東西,並沒有什麼好揭秘的。
文章在這裡:https://twiknight.gitbooks.io/blog/content/secret_of_redux_1.html
只不過是對這個問題的一個回答:
理解 React,但不理解 Redux,該如何通俗易懂的理解 Redux? - 編程
我對現有的回答都不太滿意,所以嘗試自己寫了下。
然而,自己這篇我也不怎麼滿意,可能以後會修改。
Redux的雖然很驚艷,但是其想法並沒有什麼特別的地方,倒不如說:
它的思路特別蠢,可是它蠢而有效。
以前我們處理UI作業時構建各種關係錯綜複雜無非是為了爭取一點點渲染效率。但如果我們有Virtual Dom這種自動優化機制來幫忙,Redux這種看起來特蠢的思路反倒成了優勢——因為不需要在數據層搞那些七七八八的蹩腳關係模擬,我們可以省下大量的精力。
而這種看起來特蠢的思路當然也不是Redux獨創的,這就是自動機(Automata)的一個簡單實現。而這種理論,在埃尼亞克誕生之前就存在了:
nextState = f(currentState, input)n
如果你稍微想一想,就會發現,Redux的一切就是圍繞這個方程展開的。(當然automata是有嚴格定義的,並不是我這麼寫的:Automata theory)
另外,雖然Redux標榜自己是函數式的,但不要以為你用了它就擺脫了OOP,MV*那一套了。Redux本身就是半個微型的MV*實現——說它是半個,因為它不帶view,帶上React或者其他任何view,就是完整實現了。
在這個問題上,這篇文章很有意思:https://medium.com/@abhiaiyer/the-command-pattern-c51292e22ea7#.gml3ufwnf
不過貌似medium已經被牆了……
當然,這部分在這篇裡面沒有寫——後面帶個(1),我總要留點東西給(2)吧。(逃
推薦閱讀: