首页 > 解决方案 > 如何在不改变状态本身的情况下获取状态值并对其进行操作?

问题描述

我正在开发一个带有本机反应的应用程序。我在状态(lettersPosition)中有一个对象数组,我想在函数内的变量中对其进行时间排序(但我不希望对状态本身进行排序):

verifyWord = () => {
    const array = this.state.lettersPosition;       
    array.sort(function (a, b) {
        return a.x - b.x;
    });
    var word = "";
    array.map(function (char) {
        word += char.letter
    })
}

我对其进行了测试,看来我的状态本身在排序后已更新(即使我在临时数组上调用了排序函数)。

就像“数组”变量包含对状态的整个引用而不仅仅是它的值。如果我修改该变量,它也会修改状态。

这是反应的正常行为吗?

如何在不改变状态本身的情况下获取状态的值并对其进行操作?

谢谢

标签: reactjsreact-native

解决方案


尝试使用var newArray = oldArray.slice();而不是 const array = this.state.lettersPosition;在您的代码中,您没有创建数组的副本,您只是将其分配给另一个变量。

有关更多信息,请参阅按值复制数组var newArray = oldArray.slice();


推荐阅读