2017-10-14 55 views
1

现在,我做这种方式:在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}; 
     }) 
    } 
} 

但是这种规模的二维数组,有一些明显的滞后,因为整个阵列必须被复制。这是最有效的方法吗?

+0

为什么要在一个数组中保存如此多的数据? Mabe,如果你可以把它分成不止一个。 – jalal246

回答

0

有复制一个阵列更方便,更快捷的方式:

const newArray = [...oldArray]; 

所以才:

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

请注意,这只是一个浅拷贝。如果您想要深入复制,可以选择多个阵列克隆函数的示例。

+0

如何知道我是否需要浅拷贝或深层拷贝? –

相关问题