redux

events 发布订阅者
react flaw
mobx dva wordpress
状态管理 redux
Redux 由Flux演变而来,但受Elm的启发,避开了Flux的复杂性.不管你有没有使用过它们,只需几分钟就能上手 Redux。
为应用程序提供了一个可预测的状态容器,在标砖的nvc框架中。数据可以ui组件和存储之间双向流动,而redux严格限制了数据只能在一个方向上流动
单项数据流 纯函数,数据驱动,jsx,虚拟dom
数据改变ui,UI不会轻易改变视图

reducer 只是一个接收state 和action,并返回新的state 的函数
注意每个 reducer 只负责管理全局 state 中它负责的一部分。每个 reducer 的 state 参数都不同,分别对应它管理的那部分 state 数据
三大原则
单一数据源
整个应用的state被储存在一棵object tree中,并且这个object tree只存在于唯一一个store中。
State 是只读的
唯一改变state的方法就是触发action,action是一个用于描述已发生事件的普通对象
使用纯函数来执行修改
为了描述action如何改变state tree ,你需要编写reducers。


Action 是把数据从应用(译者注:这里之所以不叫 view 是因为这些数据有可能是服务器响应,用户输入或其它非 view 的数据 )传到 store 的有效载荷。它是 store 数据的唯一来源。一般来说你会通过 store.dispatch() 将 action 传到 store。


Store
职责:
action描述:“发生了什么”的一个动作,通过disoathch来执行这个动作
reducers来根据action更新state的用法
store就是把他们联系到一起的对象
有参数或者数据需要被多个页面共享的时候
基础
提供createStore()方法创建一个仓库
提供getState()方法获取state
提供dispatch(action)方法更新state
提供subscribe(listener)注册监听器
通过unsbuscribe(listener)返回的函数注册监听器
再次强调一下Redux应用只有一个单一的store

纯函数
当我们的程序变得庞大的时候,将不可避免地引发一些bugs。我们不能保证杜绝bug产生,但是我们可以通过某些编程方式来减少一些错误的发生
纯函数就是其中一种,它也是函数式编程中的一部分,为什么可以起到减少bug的作用呢,原因就在于能被称之为纯函数而制定的一些原则,
3个原则:
变量都只在函数作用域内获取,作为的函数的参数传入
不会产生副作用,不会 改变被传入的数据或者其他数据
相同的输入一定保证相同的输出,
纯函数的一些优点
容易测试
因为相同的输入必定会是相同的输出,因此结果可以缓存
自我记录因为需要的变量都是参数,参数命名良好的情况下即使很久以后再去看这个函数依旧可以很容易知道这个函数需要哪些参数
因为不用担心有副作用,可以更好的工作

redux工作原理
首先建一个仓库,想要数据,用户组件界面,(想要执行action必须用dispatch) reducers处理,判断,通过仓库返回一些想要的数据

 

posted @ 2019-01-10 08:15  maps..xy  阅读(120)  评论(0编辑  收藏  举报