当前位置: 首页 > 面试题库 >

我为什么要保持状态平坦

钦海荣
2023-03-14
问题内容

我将ReactJs与Redux一起使用,在一些教程和代码上,我看到人们建议并使用normalizr 保持状态平坦
。但是,保持平坦的真正优势是什么?如果没有,我会遇到任何问题吗?有必要吗 ?


问题答案:

三个主要原因:

  • 不变地更新嵌套的Javascript对象通常会导致难以维护的丑陋代码,除非您使用实用程序库来打包过程
  • 不变地更新嵌套数据要求您返回嵌套层次结构中所有项目的新副本。由于组件通常会对数据进行浅等式参考比较以查看是否需要更新,因此更新嵌套数据通常意味着要更新更多的对象,即使实际数据没有不同,也可能需要重新渲染更多的组件。
  • 平面数据,尤其是规范化数据,为定义组件提供了一些更优化的方法(例如,将每个列表项组件本身连接在一起的列表,给定一个项目ID作为道具,并负责通过以下方式查找其自身的数据)该ID)


 类似资料:
  • HTTP协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状态 客户端与服务器端的一次通信,就是一次会话 实现状态保持的方式:在客户端或服务器端存储与会话有关的数据 存储方式包括cookie、session,会话一般指session对象 使用cookie,所有数据存储在客户端,注意不要存储敏感信息 推荐使用sesison方式,所有数据存储在服务器端,在客户端cookie中存储sessio

  • 我知道: 对于无状态会话bean,服务器可以在池中维护数量可变的实例。每次客户端请求这样一个无状态bean时(例如通过一个方法),都会选择一个随机实例来服务该请求。 我的问题是:为什么需要游泳池?EJB无状态bean的一个实例不应该足以服务所有请求吗? 另外,如果给定无状态bean的服务器使用的是10个实例的池,那么10是它可以在这样一个bean上处理的最大请求数吗? 你能帮我消除疑虑吗? 编辑:

  • 问题内容: Java中的无状态Bean不会在两次客户端调用之间保持其状态。因此,简而言之,我们可以将它们视为具有业务方法的对象。每个方法都带有参数并返回结果。调用该方法时,将在执行堆栈中创建一些局部变量。当该方法返回时,将本地对象从堆栈中删除,并且如果分配了一些临时对象,则无论如何都会对其进行垃圾回收。 在我看来,这与通过单独的线程调用同一实例的方法没有什么不同。那么,为什么容器不能使用bean的

  • 问题内容: 我正在学习EJB3,只是好奇何时可以方便地使用SFSB?当SFSB确实可以轻松解决一些复杂问题时,我找不到任何很好的示例。 实际上,我看到SLSB可以用作Web服务,这很方便。但我不知道何时使用SFSB。我只看到它的问题,因为我们应该学习一些有关它的知识,我们应该编写由批注组成的代码,其内容要少于完全注释,我们应该使用烦人的查找方法……而我们得到的任何回报都没有。 例如,我们不能使用S

  • 使用 san-store 进行应用状态管理,就要先接受它的理念: 单向流 全局唯一的应用状态源 状态更新模式单一,不能通过store直接更新应用状态 那么,使用 san-store 进行应用状态管理,和自己在组件里完成所有事情,有什么区别呢? 自己管理你的应用状态 自己在组件里完成所有事情,意味着你需要自己管理你的应用状态。经验丰富的开发人员能够凭着设计经验和直觉让应用良构,但在不断的迭代与新需求

  • 我有一个将Apache Ignite用作单节点集群的应用程序。也就是说,Ignite由应用程序启动和停止,其生命周期与应用程序匹配。 Ignite缓存同时启用了持久存储和读通。所以 首先调用cache.get 所有这一切似乎都运转得很好。这是我的问题:有时(经常)当应用程序被跳转或重新部署时,持久存储区数据目录就Apache Ignite而言仍然保持锁定状态。因此,Ignite会无声地创建一个新的