Store
Store 是将 Action 和 Reducer 联系到一起的对象。Store 能够维持应用的 State,并且能够提供getState()
来获取 State,提供dispatch(action)
来更新 State,通过subscribe(listener)
及其返回的函数注册和注销监听器。每个 Redux 应用有且只有一个 Store,当需要拆分数据逻辑时,应该使用 Reducer 组合而不是创建多个 Store。
Store 可以通过之前combineReducers()
返回的主 Reducer 创建,这是通过 Redux 提供的createStore()
来完成的。所以基于之前的示例创建一个 Store 就是通过以下代码。
import { createStore } from 'redux';
import { contentApp } from './reducers';
let store = createStore(contentApp);
createStore()
还可以接受第二个参数,其内容为 State 的初始状态。
定义好的 Store 可以使用以下方式发起 Action。
store.dispatch(addContent('some content'));
store.subscribe()
可以在 Store 上注册一个监听器,每当 Dispatch Action 的时候就会执行,在监听器函数中可以使用store.getState()
来获取当前的 State。
let unsubscribe = store.subscribe(() => {
let currentValue = store.getState();
});
// 注销监听器
unsubscribe();
在监听器中可以进行 Dispatch 操作,但是需要注意这样的操作会导致 Store 进入无限循环。并且store.subscribe()
是一个低层级 API,在一般情况下并不建议直接使用。