Изменение массива в 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))