常見問題常見問題索引在此頁面上Redux 常見問題目錄一般我應該在什麼時候學習 Redux?我應該在什麼時候使用 Redux?Redux 是否只能與 React 搭配使用?我是否需要有特定的建置工具才能使用 Redux?Reducer我該如何讓兩個 reducer 共享狀態?我是否必須使用 combineReducers?我是否必須使用 switch 陳述式來處理動作?整理狀態我是否必須將所有狀態都放入 Redux 中?我是否應該使用 React 的 useState 或 useReducer?我是否可以在我的 store 狀態中放入函式、承諾或其他不可序列化項目?我該如何整理狀態中的巢狀或重複資料?我是否應該將表單狀態或其他 UI 狀態放入我的 store 中?設定 Store我是否可以或應該建立多個 store?我是否可以自行匯入我的 store,並在元件中使用它?我的 store enhancer 中是否可以有多個 middleware 鏈?middleware 函式中的 next 和 dispatch 有什麼不同?如何只訂閱狀態的一部分?我可以將派送的動作作為訂閱的一部分嗎?動作為什麼類型必須是字串,或至少是可序列化的?為什麼我的動作類型應該是常數?還原器和動作之間是否總是一對一的對應關係?如何表示「副作用」,例如 AJAX 呼叫?為什麼我們需要「動作建立器」、「thunk」和「中間件」來執行非同步行為?我應該使用哪種非同步中間件?您如何決定使用 thunk、saga、可觀察對象或其他方法?我是否應該從一個動作建立器連續派送多個動作?不可變資料不可變性的好處是什麼?為什麼 Redux 需要不可變性?有哪些處理資料不可變性的方法?我必須使用 Immer 嗎?使用 JavaScript 進行不可變操作有哪些問題?程式碼結構我的檔案結構應該是什麼樣子?我應該如何在專案中分組我的動作建立器和還原器?我的選擇器應該放在哪裡?我應該如何在還原器和動作建立器之間分割我的邏輯?我的「商業邏輯」應該放在哪裡?為什麼我應該使用動作建立器?WebSocket 和其他持續連線應該放在哪裡?如何在非組件檔案中使用 Redux 儲存?效能Redux 在效能和架構方面「擴充」得如何?為每個動作呼叫「我的所有還原器」不會很慢嗎?我必須在還原器中深度複製我的狀態嗎?複製我的狀態不會很慢嗎?如何減少儲存更新事件的數量?擁有「一個狀態樹」會導致記憶體問題嗎?派送許多動作會佔用記憶體嗎?快取遠端資料會導致記憶體問題嗎?設計決策為什麼 Redux 沒有將狀態和動作傳遞給訂閱者?為什麼 Redux 不支援使用類別作為動作和還原器?為什麼中間件簽章使用柯里化?為什麼 applyMiddleware 使用閉包進行派送?為什麼 combineReducers 在呼叫每個還原器時不包含第三個引數,其中包含整個狀態?為什麼 mapDispatchToProps 不允許使用 getState() 或 mapStateToProps() 的回傳值?React Redux為什麼我應該使用 React-Redux?為什麼我的元件沒有重新渲染,或是我的 mapStateToProps 沒有執行?為什麼我的元件太常重新渲染?我該如何加速我的 mapStateToProps?為什麼我在已連接的元件中沒有 this.props.dispatch 可用?我應該只連接我的頂層元件,還是可以在我的樹狀結構中連接多個元件?其他有任何較大型的「實際」Redux 專案嗎?我該如何在 Redux 中實作驗證?