為什么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就沒用了