# 遷移到 Redux
Redux 不是一個單一的框架,而是一系列的約定和[一些讓他們協同工作的函數](../api/README.md)。你的 Redux 項目的主體代碼甚至不需要使用 Redux 的 API,大部分時間你其實是在編寫函數。
這讓到 Redux 的雙向遷移都非常的容易。
我們可不想把你限制得死死的!
## 從 Flux 項目遷移
[Reducer](../Glossary.md#reducer) 抓住了 Flux Store 的本質,因此,將一個 Flux 項目逐步到 Redux 是可行的,無論你使用了 [Flummox](http://github.com/acdlite/flummox)、[Alt](http://github.com/goatslacker/alt)、[traditional Flux](https://github.com/facebook/flux) 還是其他 Flux 庫。
同樣你也可以將 Redux 的項目通過相同的步驟遷移回上述的這些 Flux 框架。
你的遷移過程大致包含幾個步驟:
- 創建一個叫做 `createFluxStore(reducer)` 的函數,通過 reducer 函數適配你當前項目的 Flux Store。從代碼來看,這個函數很像 Redux 中 [`createStore`](../api/createStore.md) ([來源](https://github.com/reactjs/redux/blob/master/src/createStore.js))的實現。它的 dispatch 處理器應該根據不同的 action 來調用不同的 `reducer`,保存新的 state 并拋出更新事件。
- 通過創建 `createFluxStore(reducer)` 的方法來將每個 Flux Store 逐步重寫為 Reducer,這個過程中你的應用中其他部分代碼感知不到任何變化,仍可以和原來一樣使用 Flux Store 。
- 當重寫你的 Store 時,你會發現你應該避免一些明顯違反 Flux 模式的使用方法,例如在 Store 中請求 API、或者在 Store 中觸發 action。一旦基于 reducer 來構建你的 Flux 代碼,它會變得更易于理解。
- 當你所有的 Flux Store 全部基于 reducer 來實現時,你就可以利用 [`combineReducers(reducers)`](../api/combineReducers.md) 將多個 reducer 合并到一起,然后在應用里使用這個唯一的 Redux Store。
- 現在,剩下的就只是[使用 react-redux](../basics/UsageWithReact.md) 或者類似的庫來處理你的 UI 部分。
- 最后,你可以使用一些 Redux 的特性,例如利用 middleware 來進一步簡化異步的代碼。
## 從 Backbone 項目遷移
Backbone 的 Model 層與 Redux 有著巨大的差別,因此,我們不建議從 Backbone
項目遷移到 Redux 。如果可以的話,最好的方法是徹底重寫 app 的 Model 層。不過,如果重寫不可行,也可以試試使用 [backbone-redux](https://github.com/redbooth/backbone-redux) 來逐步遷移,并使 Redux 的 store 和 Backbone 的 model 層及 collection 保持同步。
- 自述
- 介紹
- 動機
- 核心概念
- 三大原則
- 先前技術
- 學習資源
- 生態系統
- 示例
- 基礎
- Action
- Reducer
- Store
- 數據流
- 搭配 React
- 示例:Todo List
- 高級
- 異步 Action
- 異步數據流
- Middleware
- 搭配 React Router
- 示例:Reddit API
- 下一步
- 技巧
- 配置 Store
- 遷移到 Redux
- 使用對象展開運算符
- 減少樣板代碼
- 服務端渲染
- 編寫測試
- 計算衍生數據
- 實現撤銷重做
- 子應用隔離
- 組織 Reducer
- Reducer 基礎概念
- Reducer 基礎結構
- Reducer 邏輯拆分
- Reducer 重構示例
- combineReducers 用法
- combineReducers 進階
- State 范式化
- 管理范式化數據
- Reducer 邏輯復用
- 不可變更新模式
- 初始化 State
- 結合 Immutable.JS 使用 Redux
- 常見問題
- 綜合
- Reducer
- 組織 State
- 創建 Store
- Action
- 不可變數據
- 代碼結構
- 性能
- 設計哲學
- React Redux
- 其它
- 排錯
- 詞匯表
- API 文檔
- createStore
- Store
- combineReducers
- applyMiddleware
- bindActionCreators
- compose
- react-redux 文檔
- API
- 排錯