# 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路由
- 参考资料