背景
这里简单谢谢Redux一些基本概念吧,有时候虽然用的时候可以查一查,但是讲的时候总感觉不系统,可能还是理解不深入,有空还是要看下源码加深理解
Redux本质上是帮助管理state的
三大原则
- 单一数据源
整个应用的 state 被储存在一棵 object tree 中,并且这个 object tree 只存在于唯一一个 store 中
console.log(store.getState())
- State是只读的
唯一改变 state 的方法就是触发 action,action 是一个用于描述已发生事件的普通对象
视图和网络请求都不能修改state,所有的修改都被集中化处理,那就是Action
store.dispatch({
type: 'COMPLETE_TODO',
index: 1
})
- 使用纯函数来执行修改
为了描述 action 如何改变 state tree ,你需要编写 reducers
reducers是函数,可以被拆分,可以控制其调用顺序
import { VisibilityFilters } from '../actions'
const visibilityFilter = (state = VisibilityFilters.SHOW_ALL, action) => {
switch (action.type) {
case 'SET_VISIBILITY_FILTER':
return action.filter
default:
return state
}
}
export default visibilityFilter
Action
是store数据的唯一来源,通过dispatch()将action传递到store()
Action 创建函数
function addTodo(text) {
return {
type: ADD_TODO,
text
}
}
dispatch(addTodo(text))
Reducers
指定了应用状态的变化如何响应 actions 并发送到 store 的
(previousState, action) => newState
注意:
- 不要修改 state
- 在 default 情况下返回旧的 state
Store
Redux 应用只有一个单一的 store
- 维持应用的 state;
- 提供 getState() 方法获取 state;
- 提供 dispatch(action) 方法更新 state;
- 通过 subscribe(listener) 注册监听器;
- 通过 subscribe(listener) 返回的函数注销监听器。