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

在ReactJS中更新数组[duplicate]

宗政德宇
2023-03-14

这就是状态变量中的内容

this.state = {
            check: 0,
            places: ["0","0","0","0","0","0","0","0"],
    }
  }

我试图做的是调用一个函数来更新一个位置的期望值。例如,我使用的changeValue函数如下:

changeValue= (event) => {

        this.setState({
            places[2]: "1",
        });
  }

它不起作用。我知道我可以传递一个完全更新的数组,但我需要当前状态的其他值。

共有3个答案

子车劲
2023-03-14

setState将对象作为参数,键作为状态键。确保传递了正确的密钥以更新状态。

试试这个---

changeValue= (event) => {
        this.setState({
            places: places.map((item, index) => { 
                            if(index == 2) return 1;
                            return item;  
                    });
        });   }
岳俊晖
2023-03-14

将此行添加到构造函数中。

this.changeValue = this.changeValue.bind(this);

除了这里的另一个答案之外,您还需要在构造函数中绑定函数以使其工作,特别是当您试图通过来自子对象的回调来处理事件时。

荀俊迈
2023-03-14

下面是如何获取当前位置数组的其余部分(并复制它以确保不会在setState之外改变状态):

changeValue = (event) => {
  const places = this.state.places.slice();
  places[2] = '1';
  this.setState({ places });
}
 类似资料:
  • 在的文档中: setState()不会立即突变this.state但会创建一个挂起的状态转换。调用此方法后访问this.state可能会返回现有值。 第二个(可选)参数是一个回调函数,它将在setState完成并重新呈现组件后执行。 如果我只是想更新我的状态,我会创建一个什么都不做的回调吗?

  • 问题内容: 我有一个称为状态的对象数组。 说我有功能 这里的问题是,每次调用时,整个数组都会更新,因此整个DOM都将重新呈现。在我的情况下,这导致浏览器冻结,因为我几乎每秒都要调用此函数,并且有很多对象。但是,在每次通话中,实际上仅更新其中一个或两个设备。 我有什么选择? 编辑 在我的确切情况下,a 是一个定义如下的对象: 因此,数组中的每个项目都是this的特定瞬间,即我所拥有的某个地方: 我更

  • 问题内容: 如果您将数组作为状态的一部分,并且该数组包含对象,那么通过更改其中一个对象来更新状态的简便方法是什么? 示例,从关于react的教程中修改而来: 问题答案: 在更新状态时,关键部分是将其视为不变。如果可以保证,任何解决方案都可以。 这是我使用immutability-helper的解决方案: jsFiddle:

  • 问题内容: 我是ReactJS(0.13.1)的新手,并且在我的应用程序中创建了一个组件来显示HTML5视频。 它似乎完美运行,但仅适用于第一选择。从一个视频切换到另一个视频时(更改时),页面中实际显示和播放的视频不会改变。 我可以在Chrome检查器中看到元素更新,但是页面中实际渲染的视频没有改变,如果已经播放,则继续播放。Safari和Firefox中也会发生相同的情况。所有其他元素也会适当更

  • 我有一个highlight模式为:

  • 问题内容: 我的文档如下所示: 说,我需要使用 与会者ID:2016102973634-df 更新与会者JSON数组。我尝试了使用 更新和条件表达式的 多种方法,但均未成功。 这是我的尝试: 找不到用于更新数组中的Json的任何资源。 @notionquest发表评论后:-尚未使用任何JsonMarshaller。最初,我将空数组添加到与会者字段,如下所示: 然后,当新的 与会者 到来时,将其添加