Изменение массива в React

Такой вопрос.

board =  [
        [1,1,1,2,2,2,1,1,1],
        [1,1,1,2,2,2,1,1,1],
        [1,1,1,2,2,2,1,1,1],
        [2,2,2,2,2,2,2,2,2],
        [2,2,2,2,3,2,2,2,2],
        [2,2,2,2,2,2,2,2,2],
        [1,1,1,2,2,2,1,1,1],
        [1,1,1,2,2,2,1,1,1],
        [1,1,1,2,2,2,1,1,1],
      ]

Это массив - шаблон. Делаю копию const [arr, SetArr] = useState(board) Далее работаю с arr.

let arr2 = [...arr]
arr2[0][0] = 3
arr2[1][1] = 3
SetArr(arr2)

Изменения сохраняются и отображаются. НО. Если я хочу обновить массив arr и вернуть его к начальной точке, а именно: SetArr(board) получается ерунда какая-то. Архив не возвращается к начальной точке. Получается , что в board храниться изменённый массив равный arr. При этом, если сделать рестарт проекта то всё начинается с нуля и работает. Я не могу понять почему меняется board


Ответы (1 шт):

Автор решения: Vasyl Penteleychuk

Если объект содержит методы или массив содержит функции, то копирование с помощью JSON-преобразования не сработает. Тогда нужно смотреть в сторону библиотеке lodash

let arr2 = JSON.parse(JSON.stringify(board))
→ Ссылка