Store 有以下职责:
- 维持应用的 state;
- 提供 getState() 方法获取 state;
- 提供 dispatch(action) 方法更新 state;
- 通过 subscribe(listener) 注册监听器;
- 通过 subscribe(listener) 返回的函数注销监听器。
根据Reducer创建store
根据已有的 reducer 来创建 store 是非常容易的。
import { createStore } from 'redux'
import todoApp from './reducers'
let store = createStore(todoApp)
createStore() 的第二个参数是可选的, 用于设置 state 初始状态。
let store = createStore(todoApp, window.STATE_FROM_SERVER)
发起 Actions
向store发送action,action会被传给reducer,reducer处理action并返回新的state
import {
addTodo,
toggleTodo,
setVisibilityFilter,
VisibilityFilters} from './actions'
// 打印初始状态
console.log(store.getState())
// 注册监听器,每次 state 更新时,监听器都会被调用
// 注意 subscribe() 返回一个函数用来注销监听器
const unsubscribe = store.subscribe(() =>
console.log(store.getState())
)
// 发起一系列 action
store.dispatch(addTodo('Learn about actions'))
store.dispatch(addTodo('Learn about reducers'))
store.dispatch(addTodo('Learn about store'))
store.dispatch(toggleTodo(0))
store.dispatch(toggleTodo(1))
store.dispatch(setVisibilityFilter(VisibilityFilters.SHOW_COMPLETED))
// 停止监听 state 更新
unsubscribe();
可以看到 store 里的 state 是如何变化的:
本文深入讲解Redux中Store的职责,包括维持应用状态、提供getState()和dispatch(action)方法,以及如何通过subscribe()注册和注销监听器。同时,介绍了如何根据Reducer创建store,并展示了通过dispatch()方法发起Actions更新state的实例。
452

被折叠的 条评论
为什么被折叠?



