redux中的reducer為什么必須(最好)是純函數


為什么reducer最好是純函數?

首先你得看看文檔怎么說reducer的作用的,‘接收舊的 state 和 action,返回新的 state’,他起的是一個對數據做簡單處理后返回state的作用。

為什么只起這個作用?

因為redux把reducer設計成只負責這個作用,所以reducer的職責不允許有副作用,副作用簡單來說就是不確定性,如果reducer有副作用,那么返回的state就不確定。

舉個例子,你的reducer就做了一個value = value + 1這個邏輯,然后返回state為{value},ok,這個過程太純了。

然后你可能覺得要加個請求來取得value后再加1,那么你的邏輯就是value = getValue() + 1, getValue是個請求函數,返回一個值,這種情況,退一萬步講,如果你的網絡請求這次出錯,那么getValue就返回的不是一個數值,value就不確定了,所以return的state你也不確定了,前端UI拿到的數據也不確定了,所以就是這個環節引入了副作用,redux設計好的規范就被你破壞了,redux就沒用了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM