zoukankan      html  css  js  c++  java
  • 为什么要用redux?component自身管理自己的state难道不更解耦吗?

         这是前几天百度2面的时候,面试官问我的一个问题。说实话当时有点紧张,其实也没去细想,本身react我就学了2个多星期,虽然看过redux这些源码,不过这个问题好像我从来没想过。

         那其实react官网本身就是用自身管理state的例子的,所以当时我就回答说:没有人规定一定要用redux,如果应用简单,自身管理完全ok,redux是为了更好的管理数据,当然也不限定用几个redux。。。。后面可能还说了一些话,但其实当时有点蒙蔽了,就瞎几把扯了。。。

         其实,redux的作者自己都说了:"尽管react+redux是经常联系在一起的,但不是所有app都非要用redux的."

         如果再有人问你为什么要用redux?你可以大胆的说:“视情况而定!”,redux使得state只读,内部靠currentState这个私有变量维护。我们想改变state,只能通过reducer/actions。这样的好处是状态与action一一对应,比较好预测state的变化。项目做大了,也好整体测试。

         而且有一种情况是,你在设计reducer的时候,用createreducers对reducers归类,这本身也是一种解耦 。

         如果有人跟你说,redux可以更持久的维持状态,我觉得这句话没问题。但是不需要redux,我们也可以持久化状态。方法也很多,所以,这点上,我觉得不是非常必要。但记住,如果靠组件自身维持,你比如要在父级组件中维持这个状态,只是我们不用redux这个库而已,思想其实是一致的。

         如果有人跟你说,redux利于组件间资源共享。这话也没问题。但是其实自身通过props也可以传。只不过同级别的无法共享。如果想不用redux这个库,我们也需要在他们的公共父级添加state来控制。

         总而言之,有了redux方便我们做数据的持久维持,组件间资源共享。还支持了撤消/重做,不局限于自身state的控制。完完全全交给了action与reducer。这也是一种解放!!!!

         

  • 相关阅读:
    flex 鼠标事件和效果
    查看和修改Oracle服务器端的字符集
    Oracle随机抽取数据sql
    hibernate.properties
    Oracle11g物理文件冷备份(转)
    支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url
    关于Oracle的行转列
    Intellij idea 12 tomcat日志窗口不显示问题
    在Servlet中获取来源URL
    uniapp 实现小程序列表项左滑菜单
  • 原文地址:https://www.cnblogs.com/huenchao/p/7427692.html
Copyright © 2011-2022 走看看