# Store
Store 就是保存數據的地方,可以把它看成一個容器。整個應用只能有一個 Store,易于管理。
## 創建 Store
Redux 提供 `createStore` 這個函數,用來生成 Store。
```js
import { createStore } from 'redux';
const store = createStore(fn);
```
上面代碼中,createStore 函數接受另一個函數作為參數,返回新生成的 Store 對象。
根據已有的 reducer 來創建 store 是非常容易的。我們使用 `combineReducers()` 將多個 reducer 合并成為一個。現在我們將其導入,并傳遞 createStore()。
```js
import { createStore } from 'redux'
import todoApp from './reducers'
let store = createStore(todoApp)
```
createStore() 的第二個參數是可選的, 用于設置 state 初始狀態。這對開發同構應用時非常有用,服務器端 redux 應用的 state 結構可以與客戶端保持一致, 那么客戶端可以將從網絡接收到的服務端 state 直接用于本地數據初始化。
```js
let store = createStore(todoApp, window.STATE_FROM_SERVER)
```
## Store 的作用
Store 有以下職責:
- 維持應用的 state;
- 提供 `getState()` 方法獲取 state;
- 提供 `dispatch(action)` 方法更新 state;
- 通過 `subscribe(listener)` 注冊監聽器;
- 通過 `subscribe(listener)` 返回一個函數,執行此函數即注銷監聽器。
再次強調一下 Redux 應用只有一個單一的 store。當需要拆分數據處理邏輯時,應該使用 reducer 組合 而不是創建多個 store。
- 簡介
- 第一章 React入門
- 1.1 創建一個React項目
- 1.2 組件
- 1.3 JSX
- 1.4 eject
- 1.5 渲染
- 第二章 React組件
- 2.1 組件定義
- 2.2 數據處理
- 2.2.1 props
- 2.2.2 state
- 2.3 生命周期
- 2.3.1 裝載過程
- 2.3.2 更新過程
- 2.3.3 卸載過程
- 2.4 事件處理
- 2.5 條件渲染
- 2.6 列表渲染
- 第三章 React高級
- 3.1 靜態類型檢查
- 3.1.1 flow
- 3.1.2 typescript
- 3.2 React Developer Tools
- 第四章 Redux狀態管理
- 4.1 安裝與配置
- 4.2 一個簡單的計數器開始
- 4.3 Store
- 4.3.1 獲取state
- 4.3.2 subscribe
- 4.4 Action
- 4.4.1 Action Creators
- 4.5 Reducer
- 4.5.1 Reducer 的拆分
- 4.6 與其他狀態管理工具的對比
- 第五章 React-Router路由
- 參考資料