当前位置: 首页 > 知识库问答 >
问题:

React,更新状态的首选方式是什么[duplicate]

章稳
2023-03-14
state = {
  blog: {
    name: 'abc',
    score: 5
  }
}


var { blog } = this.state

//你想做blog.score=5

1. blog = _.merge({}, blog, {
  score: 3
})


2. blog = {
    ...blog,
    score: 5
   }

3. blog = update(blog, {
     $set: {
       score: 5
     }
   }

this.setState({blog})

我不知道是否还有其他的方法,但是有没有比这些更好的方法呢?

什么关于

state = {
  site: { 
    blog: {
      name: 'abc',
      score: 5
    }
  }
}


site = _.merge({}, site, {
  blog: {
    score: 5
  }
})


site = update(site, {
  blog: {
    $set: {
      score: 5
    }
  })


this.setState({site})

共有2个答案

归德厚
2023-03-14

\合并是一个合理的解决方案,但建议使用https://github.com/kolodny/immutability-helper 自从react addons update以来一直被视为遗留的附加组件。

公西国发
2023-03-14

reactjs已经提供了将以前的状态与新状态合并的实用程序。

let newState = React.addons.update(this.state, {
  blog: {
    score: { $set: 5}
  }
});
this.setState(newState);

有关此插件的更多详细信息

 类似资料:
  • 问题内容: 假设我有一个普通对象列表,然后可以用来呈现子级列表。那么将对象插入其中的正确方法是什么? 以下是我认为它将起作用的唯一方法,因为您不能像文档中提到的那样直接更改。 这对我来说似乎很丑。有没有更好的办法? 问题答案: 返回一个新数组,所以你可以做 另一个选择是React的不变性助手

  • 每个插件都可以定义自己的内容(通过),这些内容应该添加到我的应用程序中的特定位置(进入)。在该中可以看到的插件中总是只有一个。 我找不到实现这一目标的首选方法。我应该用插件中的新部分替换当前可见的部分吗?或者只是以某种方式设置已经可见的部分的内容(可能通过setContributionUri)。 我查看了。看起来它可以根据实例化,但它只有一些方法可以使新的可见。我需要将新的添加到现有的中,并可能删

  • 问题内容: 我知道状态允许我们创建动态和交互的组件,但是我想深入了解状态。 有人可以通过一个真实的例子来帮助我理解React中的状态吗? 问题答案: 在上面的代码中,它有一个带有:count 的对象。 状态可以简单地理解为特定组件/应用在该时间点的值。在上面的示例中,当应用首次运行时,该应用处于状态 如我们所见,有两个按钮,它们使用来更新值,它只是更新应用计数的“状态”,并且只要状态改变,应用都会

  • 我有问题的反应形式和管理的状态适当。我在一个表单中有一个时间输入字段(在一个模态中)。初始值在中设置为状态变量,并从父组件传入。这本身就很好用。 当我想通过父组件更新默认的start_time值时,问题就来了。更新本身通过在父组件中发生。但是,在我的表单中,默认的start_time值从不更改,因为它只在中定义过一次。 我尝试使用通过强制更改状态,这确实起到了作用,但给了我错误。 所以我的问题是,

  • 我试图将“加载”的状态从true更改为false,但当我调用一个函数并在该函数中设置“this.setState({loading:false})”时,加载状态仍然保持true。 在下面的代码中,当按钮按钮函数被调用时,它将“加载”状态设置为真,但当用户成功登录“加载”状态时,应该变为假,这样我的渲染按钮函数将重新渲染,旋转器可以隐藏自己并显示按钮。 为什么LoginSAccess函数中的“加载”

  • 所以我有这个: 只是一个数组的数字例如然而没有给出正确的总数,但?我甚至放了一个超时延迟,看看这是否解决了问题。任何明显的还是我应该发布更多的代码?