转 Redux写起来很麻烦... 去你大爷的纯函数# Programming - 葵花宝典v*r2017-08-13 07:081 楼选哪一种类型签证? b1,b2还是b1/b2?表格里面有一个军队问题,父亲曾经在部队呆过,如实化钩?会不会因为这个被拒?
u*a2017-08-13 07:082 楼张蓝心. 一查是全国跆拳道冠军. 腿长体脂低. 英气十足, 有点碟中谍4女主角的亚马逊女战士气质 (这点运动能力差的女星根本装不出来)...看着很有感觉, 装逼能力也不错.
d*r2017-08-13 07:085 楼作者:Jim Liu链接:https://www.zhihu.com/question/63726609/answer/212357616来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。Redux是基于纯函数的,为了保证它的“纯度”,它的reducer函数必须是严格的 S' =f(S) 的形态,所以,与其说Redux是“状态管理”库,不如说它是“状态转移管理”库,因为Redux是无状态的,状态是在你的程序里的,你自己维持状态,它只是给你提供了一个状态转移的统一方式。这使得它的整个模型看起来是非常干净。而事实上我们在开发实际项目当中可能有小半(maybe大半)的reducer场景其实应该是S' = await fAsync(S) 的形态,比方说,我点了一个计数器+1的按钮,在一个美丽的DEMO里,它就+1了,但放到生产需求里,很可能是要先发起一个Ajax请求,请求OK了再+1,甚至这时候不是+1,而是直接和服务端同步一个新的值。但异步的reducer就破坏了它的“纯度”,因为异步是不确定的,先发不一定先至,这会破坏reducer的“可回放性”,它引以为豪的replay就不成立了,它的基石就崩塌了。这就注定了它解决不了异步的问题,然后它为了让自己显得很白玉无瑕,死活也不愿意碰异步那摊子脏东西,什么?你要在reducer里发起一个Ajax请求?对不起这不是我们的best practice,我们对此嗤之以鼻,你如果真要这么做,那就……做去吧。于是Redux在解决异步问题上的“残疾”就注定给它擦屁股的库会如雨后春笋一样的涌现出来,比如其他回答里提到的dva,再比如redux-saga,它们都是勇士,做了redux所不愿意做的那摊子脏活。这个过程又引入了新的麻烦,一方面是异步本身带来的复杂度,比如redux-saga里的every和latest;另一方面是代码写起来的麻烦,比如redux-saga里各种yield,还有可以堆成山的胶水代码。所以你觉得redux写起来很麻烦,麻烦就对了,这不是幻觉,因为它为了保证自己的简洁,把麻烦的事情抛给了你。结论很简单,要么就引入更多“生态”,让别人帮你解决麻烦,让它们对你输出价值观。要么就别走redux的函数式路线,去你大爷的纯函数,用别的价值观,我用全局变量全局事件,用watch,用observable,用whatever,反正不用你。
a*n2017-08-13 07:086 楼B1/B2,其实填B2和b1/b2都有,都有人通过,处理的是人,不是机器,他们自己自然会分辨是啥。只要你父亲不是那种特别敏感的,一般不会,很多人也填了,也通过了【在 v***r 的大作中提到】: 选哪一种类型签证? b1,b2还是b1/b2?: 表格里面有一个军队问题,父亲曾经在部队呆过,如实化钩?会不会因为这个被拒?
s*o2017-08-13 07:0810 楼正是因为繁琐麻烦,所以入了坑的勇士们都会乐意拉别人也下来享受,不然好不容易掌握的很快就成垃圾了 LOL=【在 d*******r 的大作中提到】: 作者:Jim Liu: 链接:https://www.zhihu.com/question/63726609/answer/212357616: 来源:知乎: 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。: Redux是基于纯函数的,为了保证它的“纯度”,它的reducer函数必须是严格的 S' =: f(S) 的形态,所以,与其说Redux是“状态管理”库,不如说它是“状态转移管理”库: ,因为Redux是无状态的,状态是在你的程序里的,你自己维持状态,它只是给你提供: 了一个状态转移的统一方式。这使得它的整个模型看起来是非常干净。: 而事实上我们在开发实际项目当中可能有小半(maybe大半)的reducer场景其实应该是: S' = await fAsync(S) 的形态,比方说,我点了一个计数器+1的按钮,在一个美丽的
v*r2017-08-13 07:0811 楼如果选了参加过军队,下面一系列问题什么军衔,服务部队之类的,这都要详细填阿?【在 a*****n 的大作中提到】: : B1/B2,其实填B2和b1/b2都有,都有人通过,处理的是人,不是机器,他们自己自然: 会分辨是啥。: 只要你父亲不是那种特别敏感的,一般不会,很多人也填了,也通过了
A*s2017-08-13 07:0814 楼http://stores.ebay.com/UnlockedCellPhoneKings/_i.html?_nkw=cent$100的全新palm centro【在 s*******o 的大作中提到】: 是t-mobile的prepaid sim 卡!但手機泡水壞了!求各位推薦好用的手機!
d*c2017-08-13 07:0815 楼纯函数有很多好处,但是现实世界里需要side effect,需要不纯才能做事情。不应该追求纯,而是能纯函数的地方尽量纯函数,把side effect限制在一定范围内。Haskell就是太追求纯,我看clojure没这个问题。redux可能受elm启发,这方面elm也许做的更好一点,不过我不了解细节。
c*u2017-08-13 07:0817 楼Nice. Very good. Is there any more? It's too 'shou'. I need something likethat. Thanks【在 k**n 的大作中提到】: 放开那个女巫 -- 二目: 有点意思的书。
s*32017-08-13 07:0819 楼【在 u******a 的大作中提到】: 张蓝心. 一查是全国跆拳道冠军. 腿长体脂低. 英气十足, 有点碟中谍4女主角: 的亚马逊女战士气质 (这点运动能力差的女星根本装不出来)...看着很有感觉, 装逼能: 力也不错.
k*n2017-08-13 07:0820 楼你是喜欢女巫题材,还是种田文?女巫种田就不好找了:)【在 c******u 的大作中提到】: Nice. Very good. Is there any more? It's too 'shou'. I need something like: that. Thanks
m*o2017-08-13 07:0821 楼Haskell吧side effect都封装到IO Monad里面去了。我看上Scala最好,想fp也可以,想oo也行。【在 d******c 的大作中提到】: 纯函数有很多好处,但是现实世界里需要side effect,需要不纯才能做事情。: 不应该追求纯,而是能纯函数的地方尽量纯函数,把side effect限制在一定范围内。: Haskell就是太追求纯,我看clojure没这个问题。: redux可能受elm启发,这方面elm也许做的更好一点,不过我不了解细节。
c*u2017-08-13 07:0823 楼种田后宫文。像这种好多美女的。不要太小白也不要太现实。反正感觉度要把握的和这个差不多: 你是喜欢女巫题材,还是种田文?: 女巫种田就不好找了:)【在 k**n 的大作中提到】: 你是喜欢女巫题材,还是种田文?: 女巫种田就不好找了:)
a*e2017-08-13 07:0824 楼问题不在纯函数,而在于副作用有很多种类(包括无副作用的特例,也即纯函数)。这都源于类型系统太弱鸡:1. 异步请求也可以是纯函数,但是类型系统不够强大,无法表达这种条件或者:2. Reduction 也可以允许副作用,只要副作用不影响 determinism 就好了。如果类型系统不够强大,也无法表达这种条件Untyped 语言(如 Clojure)其实是在说:“随便你怎么写,如果不满足条件的代码被默认做了非法的优化造成的后果你自己看着办,谁让你这么写来着[摊手]”归根结底,type is the study of an intrinsic property ofcode (without executing it). 不会因为写程序的人的观点而改变Haskell 的目的不是追求纯函数,而是研究如何用类型系统来学习和安排副作用,从而写出正确的代码。【在 d******c 的大作中提到】: 纯函数有很多好处,但是现实世界里需要side effect,需要不纯才能做事情。: 不应该追求纯,而是能纯函数的地方尽量纯函数,把side effect限制在一定范围内。: Haskell就是太追求纯,我看clojure没这个问题。: redux可能受elm启发,这方面elm也许做的更好一点,不过我不了解细节。
s*o2017-08-13 07:0827 楼那个我也看了,主要是遇人不淑,选什么技术都是一个死字。你们的mobile是用什么在做?【在 c******n 的大作中提到】: 上午在知乎还看到一个用react-native搞出大坑的帖子
c*n2017-08-13 07:0829 楼有钱有时间上原生没时间还是web,css改改凑活下 最多也就是redirect到稍微对mobile优化了点的web少传点东西什么的hybrid有个几个小的试水的 大的还是没上 就是怕这种时间精力扔进去了效果还不行你们呢【在 s***o 的大作中提到】: 那个我也看了,主要是遇人不淑,选什么技术都是一个死字。: 你们的mobile是用什么在做?
s*o2017-08-13 07:0831 楼也是web+css顶【在 c******n 的大作中提到】: 有钱有时间上原生: 没时间还是web,css改改凑活下 最多也就是redirect到稍微对mobile优化了点的web: 少传点东西什么的: hybrid有个几个小的试水的 大的还是没上 就是怕这种时间精力扔进去了效果还不行: 你们呢
c*e2017-08-13 07:0833 楼写ajax是在actions里,你怎么在reducer里写這個?=【在 d*******r 的大作中提到】: 作者:Jim Liu: 链接:https://www.zhihu.com/question/63726609/answer/212357616: 来源:知乎: 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。: Redux是基于纯函数的,为了保证它的“纯度”,它的reducer函数必须是严格的 S' =: f(S) 的形态,所以,与其说Redux是“状态管理”库,不如说它是“状态转移管理”库: ,因为Redux是无状态的,状态是在你的程序里的,你自己维持状态,它只是给你提供: 了一个状态转移的统一方式。这使得它的整个模型看起来是非常干净。: 而事实上我们在开发实际项目当中可能有小半(maybe大半)的reducer场景其实应该是: S' = await fAsync(S) 的形态,比方说,我点了一个计数器+1的按钮,在一个美丽的
c*e2017-08-13 07:0835 楼這個jim liu对javascript一无所知,可能是后台转前台的,用的后台的思维来做前台。=【在 d*******r 的大作中提到】: 作者:Jim Liu: 链接:https://www.zhihu.com/question/63726609/answer/212357616: 来源:知乎: 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。: Redux是基于纯函数的,为了保证它的“纯度”,它的reducer函数必须是严格的 S' =: f(S) 的形态,所以,与其说Redux是“状态管理”库,不如说它是“状态转移管理”库: ,因为Redux是无状态的,状态是在你的程序里的,你自己维持状态,它只是给你提供: 了一个状态转移的统一方式。这使得它的整个模型看起来是非常干净。: 而事实上我们在开发实际项目当中可能有小半(maybe大半)的reducer场景其实应该是: S' = await fAsync(S) 的形态,比方说,我点了一个计数器+1的按钮,在一个美丽的
y*k2017-08-13 07:0836 楼这种YY小说,金手指/主角光环必不可少啊。这些我都麻木了。这本书我觉得不错是他基本恢复了更俗的长处:善于描写错综复杂的多方势力,和细腻的发展和斗争。再加一些男女情感描写。这样即使是修仙背景的故事,更俗也已经写的达到他其他书的水准了。
d*r2017-08-13 07:0839 楼JS还是不适合做纯FP吧【在 a*****e 的大作中提到】: 问题不在纯函数,而在于副作用有很多种类(包括无副作用的特例,也即纯函数)。: 这都源于类型系统太弱鸡:: 1. 异步请求也可以是纯函数,但是类型系统不够强大,无法表达这种条件: 或者:: 2. Reduction 也可以允许副作用,只要副作用不影响 determinism 就好了。如果类型: 系统不够强大,也无法表达这种条件: Untyped 语言(如 Clojure)其实是在说:“随便你怎么写,如果不满足条件的代码被: 默认做了非法的优化造成的后果你自己看着办,谁让你这么写来着[摊手]”: 归根结底,type is the study of an intrinsic property of: code (without executing it). 不会因为写程序的人的观点而改变
c*e2017-08-13 07:0843 楼还是gmail简单,angularjs, react都不用。【在 l**********n 的大作中提到】: redux不算啥,整个react生态圈很分割。不像angular那么统一。
c*e2017-08-13 07:0845 楼gmail的web server都是google自己写的,更何况其它的。反正google里牛人有的事,写这些东西易如反掌。【在 c******n 的大作中提到】: gmail还是gwt写的吗
m*x2017-08-13 07:0846 楼其实redux的好处还是比较复杂的单app多component频繁切换的场景,mvc里面数据模型独立性比较好。如果是简单app或是复杂多app切换场景,redux route绑定起来就复杂了。。。