有没有办法只更改this.state.first的一部分?假设第三个索引为true,但其余部分保持不变。我不想重写它。我曾考虑过使用Spread Sytax,但我不知道如何?
import React from "react";
class MyClass extends React.Component {
constructor() {
super();
this.state = {
first: [false, false, false, false, false, false, false]
};
}
}
您可以执行以下操作:
this.setState(prevState => {
const newFirst = [...prevState.first];
newFirst[2] = true;
return {first: newFirst};
});
这将产生:
[false, false, true, false, false, false, false]
如您所知,您可以通过更改状态setState()
。要仅更改数组中的一个值,我们需要创建一个我们可以使用的数组的临时副本(即要const newFirst = [...prevState.first]
执行的操作),更改所需索引(newFirst[2] = true
)的值,然后将状态设置为该新数组。
这里要注意的重要一点是,我们在传递给的回调函数中完成了所有这些操作setState()
。这向我们保证,我们始终在使用先前状态,而不是当前状态。在您设置依赖于先前状态的新状态时,这是一个好习惯。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句