redux中的三个原则与先前技术

3.使用纯函数进行改变

reducer的实质其实就是一个纯函数,那么什么是纯函数呢?函数中参数的调用的是什么,返回的就是什么。在action中其接受两个参数,第一个是state,第二个参数就是action ,其表述的方式是下面这种形式,state中通常默认的是一个对象,但是也可以是其他的值。

先前技术

redux是一个混合的遗产,其与某些模式与技术相同,但是又有所不同,下面就来进行说明。

1.Flux

其与redux相同的地方在于,它们都强调其更新状态的逻辑在同一个层中,reducer在redux  stores在Flux中。另外它们改变数据的逻辑都是放在action当中;其不同之处在于redux没有Dispatcher这个概念,因为在redux中,改变更新状态这个逻辑中的reducer是一个纯函数。这样的逻辑使得数据的管理更加的直观清楚明白。与Flux的另一个重要区别是,Redux假设从不修改数据。也可以很好地为状态使用普通对象和数组,但是强烈建议在reduce中对它们进行修改。

2.Elm

其是一种函数式编程语言,其具有与redux相同的更新结构(state,action) => (action),与Redux不同,Elm是一种语言,因此它能够从许多方面受益,比如强制纯度、静态类型、开箱即用的不变性和模式匹配(使用case表达式)。

3.Immutable

其是一个实现持久数据的结构的一个JS库。其可以与redux进行正交使用。redux中的store里面的储存的内容可以是普通对象,也可以是不可变对象,也可以是其他对象。

对于Immutable,可能需要一种(反)序列化机制来编写通用应用程序,并从服务器水化它们的状态,但除此之外,您可以使用任何数据存储库,只要它支持不变性。即使不可变库支持游标,也不应该在Redux应用程序中使用它们。整个状态树应该被认为是只读的,应该使用Redux更新状态并订阅更新。因此,通过游标写入对Redux没有意义。如果游标的惟一用例是将状态树与UI树解耦,并逐步细化游标,那么应该转而考虑选择器。选择器是可组合的getter函数。

4.Baobab

其又是另外一种完成好的JSAPI,用于更新js中的普通对象。将其与redux联合使用时,会有一点好处。

最后

小编的一位同事在校期间连续三年参加ACM-ICPC竞赛。从参赛开始,原计划每天刷一道算法题,实际上每天有时候不止一题,一年最终完成了 600+:

凭借三年刷题经验,他在校招中很快拿到了各大公司的offer。

入职前,他把他的刷题经验总结成1121页PDF书籍,作为礼物赠送给他的学弟学妹,希望同学们都能在最短时间内掌握校招常见的算法及解题思路。

整本书,我仔细看了一遍,作者非常细心地将常见核心算法题和汇总题拆分为4个章节。

而对于有时间的同学,作者还给出了他结合众多数据结构算法书籍,挑选出的一千多道题的解题思路和方法,以供有需要的同学慢慢研究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值