什么是redux
redux是一个应用数据流框架,主要解决了组件间状态共享的问题,原理是集中式管理,主要有三个核心方法:action,store,reducer,工作流程是view调用store的dispatch方法接收action为参数传入store,通过action.type判断执行对应的reducer进行store操作,view通过store提供的getState获取最新的数据。
redux的设计思想与工作原理
针对dispatch和subscribe 分别认识redux工作流中最为核心的dispatch动作以及redux自身独特的发布-订阅模式dispatch这个动作刚好把action,reducer和store这三个主角给串联了起来dispatch这个动作 调用dispatch,入参为action对象。前值校验上锁:将isDispatching置为true(防止套娃)调用reducer,计算新的state解锁:将isDispatching置为false触发订阅返回action
subscribe并不是一个严格必要的方法,只有在需要监听状态的变化时我们才会调用它。 redux默认了订阅对象就是’状态的变化(dispatch)‘这个事件。subscribe与redux主流程的结合在store对象创建成功后,通过调用store.subscribe来注册监听当dispatch.action发生时,redux会在reducer执行完毕后,将listeners数组中的监听函数逐个执行。工作流:调用subscribe,入参是一个函数 - 前置校验 - 调用ensureCANMutateNextLieners确保nextListeners与currentListeners不指向同一个引用 - 注册监听函数,将入参listener函数推入nextListeners数组中 - 返回取消订阅当前listener的方法(unsubscribe)nextListeners注册监听,触发订阅,取消订阅,取消监听,currentListeners数组用于确保监听函数执行过程的稳定性禁止套娃用意:作为计算state专用函数redux在设计reducer时就强调了他必须是纯净的,不应该额外的脏操作。