代码之家  ›  专栏  ›  技术社区  ›  karthik

当我们将redux商店传递给道具并将道具设置为再次反应状态时,我们不是在重复吗?

  •  0
  • karthik  · 技术社区  · 6 年前

    这是每个REACT开发者最常做的事情。。。。我们使用redux store来维护应用程序模型,如果我们想使用存储信息,我们必须使用subscription(connect()方法)创建一个属性对象,其中mapStateToProps创建一个克隆的只读版本的存储对象。由于accessible属性是只读的,所以这还没有结束。我们继续创建另一个实例,使用setState()来反应同一对象的状态(使其可写),setState()是同一对象的另一个克隆版本。我们最终创造了同一个物体的多个版本,奇怪的是,我们可以继续变异这三个物体中的任何一个,而另一个却不知道,这可能是一场真正的浩劫。。。。。我们有什么办法可以防止这种情况吗。。。如果是这样的话,它肯定有助于提高性能,并防止克隆对象带来的危害。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Rohith Murali    6 年前

    在react中,道具和状态不应混淆。如果管理得当,它不会造成任何混淆问题,但在克隆道具时,没有必要说明我们在渲染时是否可以使用相同的道具值。因此,是的,没有必要将道具复制到状态,因为两个触发器中的更改都会重新渲染。

        2
  •  0
  •   Jay Jodiwal    6 年前

    setState方法用于更改局部状态,而redux(使用操作和减缩器)用于更改全局状态。通常情况下,正如你所说,我们需要存储这两种状态,以便保持两种状态的同步。但两者都不指向同一个对象,并且创建的本地状态不可写。它也是不可变的。

    就redux状态(全局)而言,它们仅使用操作和减缩器进行更改。直接改变任何一种状态都是一种反模式反应。redux状态应该只被读取,而不是变异。地方政府也不应该直接变异。只能使用setState方法对其进行更改

    现在回答您的问题,如果redux状态作为prop传递,那么redux状态中的更改将自动重新呈现组件。但开发人员通常会将redux状态克隆到本地状态(不同的对象),因为本地状态的重新渲染速度很快,但对本地状态所做的更改不会自动复制到redux状态。