Iva*_*ang 238 flux reactjs reactjs-flux redux
我刚刚发现了Redux.一切看起来都不错.使用Redux over Flux是否有任何缺点,陷阱或妥协?谢谢
Dan*_*mov 406
Redux的作者在这里!
我想说你将使用它做出以下妥协:
你需要学会避免突变.Flux对变异数据不感兴趣,但Redux不喜欢突变,许多与Redux互补的软件包假设你永远不会改变状态.您可以使用dev-only包来强制执行此操作,例如redux-immutable-state-invariant,使用Immutable.js,或者相信自己和您的团队编写非变异代码,但这是您需要注意的事情,这需要是你的团队接受的有意识的决定.
你将不得不仔细挑选你的包裹.虽然Flux明确没有尝试解决"附近"问题,如撤消/重做,持久性或表单,但Redux有扩展点,如中间件和商店增强器,它产生了一个年轻但丰富的生态系统.这意味着大多数包装都是新的想法,并没有获得足够的使用量.几个月后你可能会依赖于一些明显不好的东西,但现在还很难说.
你还没有一个很好的Flow集成. Flux目前允许您进行非常令人印象深刻的静态类型检查,Redux 尚不支持.我们会到达那里,但需要一些时间.
我认为第一个是初学者的最大障碍,第二个可能是过度热情的早期采用者的问题,第三个是我个人的宠儿.除此之外,我不认为使用Redux会带来Flux避免的任何特殊缺点,有些人说它与Flux相比甚至有一些上升空间.
另请参阅我对使用Redux的好处的回答.
小智 36
Redux和Flux都需要大量的样板代码来涵盖许多常见模式,尤其是那些涉及异步数据获取的模式.Redux文档已经有一些减少样板的示例:http://redux.js.org/docs/recipes/ReducingBoilerplate.html.您可以从像Alt或Fluxxor这样的Flux库中获得所需的一切,但Redux更喜欢自由而不是功能.对于一些开发人员而言,这可能是一个缺点,因为Redux会对您的状态做出某些可能无意中被忽视的假设.
您真正回答问题的唯一方法是尝试使用Redux,如果可以的话,也许是在个人项目中.Redux的出现是因为需要更好的开发人员体验,并且它偏向于函数式编程.如果您不熟悉减速器和功能组合等功能概念,那么您可能会放慢速度,但只会略微降低.在数据流中采用这些想法的好处是更容易测试和可预测性.
免责声明:我从Flummox(一种流行的Flux实现)迁移到Redux,其优势远远超过任何缺点.在我的代码中,我更喜欢魔法.更少的魔力来自于更多的样板,但这是一个非常小的代价.
Lio*_*rom 16
Redux不是纯粹的Flux实现,但绝对受到Flux的启发.最大的区别在于它使用单个存储来包装包含应用程序所有状态的状态对象.你不会像在Flux中那样创建商店,而是编写可以改变单个对象状态的reducer函数.此对象表示应用中的所有状态.在Redux中,您将获得当前操作和状态,并返回新状态.这意味着动作是顺序的,状态是不可变的.这让我想到了Redux中最明显的骗局(在我看来).
原因很简单:
1.连贯性 - 存储器的状态总是被减速器改变,因此很容易跟踪谁改变了什么.
2. 性能 - 因为它是不可变的,Redux只需要检查以前的状态!==当前状态以及是否要呈现.无需每次都将状态循环到确定的渲染.
3. 调试 - 时间旅行调试和热重新加载等新的令人敬畏的概念.
更新:如果这不足以说服,请观看Lee Byron关于不可变用户界面的优秀演讲.
Redux需要通过代码库/库的开发人员纪律来维护这个想法.您需要确保选择库并以不可变的方式编写代码.
如果您想了解更多关于Flux概念的不同实现(以及最适合您需求的概念),请查看这个有用的比较.
在说完之后,我必须承认Redux是JS未来发展的目标(就像写这些行一样).
归档时间: |
|
查看次数: |
36001 次 |
最近记录: |