什么是Redux
Redux是JavaScript 状态容器,提供可预测化的状态管理。简单的说就是把数据集中起来管理,而不是分散在各个模块中,通常用于React的数据管理。主要做法是将公用的数据存储在store中,通过props传递给子组件。
什么是Action
Action是一个普通对象,主要作用是描述要做一件什么事情。例如点击一个按钮获取数据,Action就可写成{ type: FETCH_DATA, params: ... },这个对象描述了要获取数据的这样一件事情。
什么是Reducer
Reducer的作用是接受一个旧的state与Action,返回新的state,是更变数据的唯一入口,就像这样:
function todoApp(state = initialState, action) {
return { ...state, todoList: action.todoList}
}
什么是Store
Store可以理解成一个仓库,用于存储Redux所有的state,也就是所有数据,并且还提供一些api:
- 提供
getState()方法获取state; - 提供
ispatch(action)方法更新state; - 通过
subscribe(listener)注册监听器。
dispatch主要是把Action传递给Reducer,让Reducer知道如何更新state,添加一个变化监听器。subscribe每当 dispatch action 的时候就会执行,检测state的变化,再通过getState获取数据,然后更新视图。
最后附上Reux数据流图
