未完待续
简介
如果你的应用有以下场景,可以考虑使用 Redux。
- 某个组件的状态
需要共享 - 某个状态需要在
任何地方都可以获取 - 一个组件想要
改变全局状态 - 一个组件想要
改变另一个组件状态
核心思想
web 应用是一个 状态机 ,视图与状态是 相对应 的,并且 所有的状态都保存在一个对象里。
基本概念和 API
Store
- Store 就是保存数据的地方,你可以把它看成一个容器。
整个应用只能有一个 Store。
|
State
Store对象包含所有数据。store.getState()可获得当前 State
|
Action
- Action 只是一个对象
- Action 可改变 State, 其变化会同步到 View
type属性必须,表示 Action 的名称,其他属性随意
|
Action Creator
View 要发送多少种消息,就会有多少种 Action。
如果都手写,会很麻烦。可以定义一个函数来生成 Action,这个函数就叫 Action Creator。
|
store.dispatch()
store.dispatch()是 View 发出 Action 的唯一方法。
|
Reducer
- Reducer 是一个函数
- 接受
当前State和Action作为参数并返回新的State
|
store.subscribe()
store.subscribe 方法是用来设置监听函数,一旦 State 发生变化,就自动执行这个函数。
|
流程步骤
- 首先需要在
reducer 函数内,定义 type 值和默认值对应的操作 - 把 reducer 函数放到 storeCreate(reducer)
进行初始化,初始化时 返回的是 reducer 函数内的默认值 - 通过 store.dispatch({type:’xxx’,value:123}) 来发送 Action 数据格式,以此来触发 reducer 函数,并更新 state 当前值
- 在通过
store.subscribe检测 State 的变化,以此来更新 View