现在,我这样做:

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};
        })
    }
}


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

最佳答案

复制数组有一种更简便快捷的方法:

const newArray = [...oldArray];


所以就:

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


请注意,这只是一个浅表副本。如果您想要深层复制,则有许多数组克隆功能的示例可供选择。

10-04 16:45