我想在状态
数组的末尾添加一个元素,这是正确的方法吗?
this.state.arrayvar.push(newelement);
this.setState({ arrayvar:this.state.arrayvar });
我担心使用push
修改阵列可能会导致问题-安全吗?
另一种方法是复制数组,然后setState
ing这似乎是浪费。
使用ES6
的最简单方法:
this.setState(prevState => ({
array: [...prevState.array, newElement]
}))
如果您使用的是ES6
,则最简单。
initialArray = [1, 2, 3];
newArray = [ ...initialArray, 4 ]; // --> [1,2,3,4]
新阵列将是[1,2,3,4]
要在React中更新您的状态
this.setState({
arrayvar:[...this.state.arrayvar, newelement]
});
了解有关阵列分解的详细信息
反应文档说:
对待this.state就好像它是不可改变的。
您的push
将直接改变状态,这可能导致容易出错的代码,即使您在之后再次“重置”状态。例如,它可能导致一些生命周期方法,如componentdiddupdate
不会触发。
在以后的React版本中,建议在修改状态以防止竞争条件时使用更新程序函数:
this.setState(prevState => ({
arrayvar: [...prevState.arrayvar, newelement]
}))
与使用非标准状态修改可能面临的错误相比,内存“浪费”不是问题。
早期版本的替代语法
您可以使用conat
获得一个干净的语法,因为它返回一个新数组:
this.setState({
arrayvar: this.state.arrayvar.concat([newelement])
})
在ES6中,您可以使用扩展运算符:
this.setState({
arrayvar: [...this.state.arrayvar, newelement]
})
问题内容: 我想在数组的末尾添加一个元素,这是正确的方法吗? 我担心如果就地修改阵列可能会造成麻烦-是否安全? 制作数组副本的另一种选择似乎是浪费的。 问题答案: 该阵营的文档说: 将此this.state视为不可变的。 您将直接更改状态,即使您此后再次“重置”状态,也有可能导致易于出错的代码。F.ex,它可能导致某些生命周期方法(如不会触发)。 在更高版本的React中,建议的方法是在修改状态以
问题内容: 我想在数组的末尾添加一个元素,这是正确的方法吗? 我担心如果就地修改阵列可能会造成麻烦-是否安全? 制作数组副本的另一种选择似乎是浪费的。 问题答案: 该阵营的文档说: 将此this.state视为不可变的。 您将直接更改状态,即使您此后再次“重置”状态,也有可能导致易于出错的代码。F.ex,这可能会导致某些生命周期方法(如不会触发)。 在更高版本的React中,建议的方法是在修改状态
react set函数修改二维数组状态问题 一直到arr都是符合预期的,但是setRangIds执行后,每次打印rangIds都没有变化
我有一个通过数组工作的代码,实际上我希望传入ArrayList。 下面是示例: 这是我现在的改编... 我不明白我的错误??我不知道正确的语法... 有关信息,这里的代码 大体上 非常感谢你的帮助。
在这个项目中,我使用了反应钩,这个片段用来改变项目的颜色主题,但有一个问题,我无法解决。常量lightTheme={...} Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eusmod tempor incidunt ut labore et dolore magna aliqua. 我的减速器:
问题内容: 我本质上是在尝试做出回应,但是有一些问题。 这是档案 当你点击按钮A,在RadioGroup中组件需要去选择按钮B 。 “选定”仅表示来自状态或属性的className 这里是: 的来源并不重要,它具有触发原始DOM 事件的常规HTML单选按钮 预期流量为: 点击按钮“ A” 按钮“ A”触发本地DOM事件onChange,该事件一直持续到RadioGroup 调用RadioGroup