学习了Redux的基本使用
自己总结了以下redux的过程
- 使用函数createStore创建store数据点
- 创建Reducer。它要改变的组件,它获取state和action,生成新的state
- 用subscribe监听每次修改情况
- dispatch执行,reducer(currentState,action)处理当前dispatch后的传入的action.type并返回给currentState处理后的state,通过currentListeners.forEach(v=>v())执行监听函数,并最后返回当前 action状态
但还是不理解subscribe在redux里面的作用,是观察store的变化么
export function createStore(reducer) {
let currentState = {}
let currentListeners = []
function getState() {
return currentState
}
function subscribe(listener) {
//传入函数
currentListeners.push(listener)
}
function dispatch(action){
currentState = reducer(currentState,action)
currentListeners.forEach(v=>v())
return action
}
//触发初始状态
dispatch({type:'@TYRMARS/Mars-Redux'})
return {getState,subscribe,dispatch}
}
subscribe
这个函数是用来去订阅store
的变化,比如你每次对store
进行dispatch(action)
都会触发subscribe
注册的函数调用,这个在实际情况不是必须要的,看自己的应用场景,比如你想监控store
的全局变化时 可以用subscript
订阅一下,然后作一些反应你如果实在想弄清楚,他的应用价值 可以先看下
react-redux
里connect
实现,里面就应用到了store
的subscribe
https://github.com/reactjs/react-redux/blob/master/src/utils/Subscription.js#L69