我正在尝试使用 splice 将新的 components
添加到数组中。如果我使用 concat
所有元素都在末尾正确添加,但我还需要使用 splice
在数组的开头或中间添加。有什么建议吗?
class App extends React.Component {
state = {
components: []
};
addNewElement = (element) => {
this.setState(prevState => ({
//Works fine
//components: prevState.components.concat(element)
components: prevState.components.splice(0, 0, element)
}));
};
}
原文由 Angel Cuenca 发布,翻译遵循 CC BY-SA 4.0 许可协议
请注意改变调用它们的数组的方法与返回调用它们的数组的变异版本的方法之间的区别。
prevState.components.splice(0, 0, element)
返回一个新数组,其中包含已删除的元素,对于您的目的而言,这将什么都不是。值得注意的是,
splice
也改变了组件数组;改变你的状态元素是一件坏事;避免这种情况的一种简单方法是创建数组的克隆并将 其 拼接。这是功能性的,但相对不优雅。
您可以考虑的其他选项是使用 React 的 不变性助手 或使用
slice
将原始数组分成两部分,然后concat
所有位在一起: