在ReactJS中改变大状态数组的首选方法是什么?

时间:2017-10-14 23:07:46

标签: javascript reactjs

现在,我这样做:

class Foo extends React.Component {
    constructor() {
        super();
        this.state = {data: Array(1000).fill(Array(1000).fill(0))};
    }

    mutatingFunc = (row, col) {
        this.setState((prevState) => {
            let tempArr = JSON.parse(JSON.stringify(prevState.data));
            //mutate it here
            tempArr[row][col] = 1;
            return {data: tempArr};
        })
    }
}

但是对于这个大小的二维数组,有一些明显的滞后,因为必须复制整个数组。这是最有效的方式吗?

1 个答案:

答案 0 :(得分:0)

复制数组有一种更容易,更快捷的方法:

const newArray = [...oldArray];

所以只是:

const tempArr = [...prevState.data];
tempArr[row][col] = 1;
return {data: tempArr};

请注意,这只是一个浅表副本。如果您需要深层复制,可以选择许多阵列克隆函数示例。