Есть файл с компонентом, который участвует в головном файле с маршрутами Router. В файле есть импорт константы, которая является двумерным массивом:
import {defaultPositions} from '../consts/board';
В конструкторе в state базовое значение равноценно константе
FIGURES_POS: DEFAULT_POSITIONS
Проблема следующая: при обновлении состояния компонента - меняется и константа, даже при переходе на другую страницу приложения с помощью HashRouter. Только при реальном обновлении страницы она принимает исходное состояние. Как избавиться от этого?
Приветствую
Не совсем понятно, почему вы импортируете defaultPositions, а в компоненте используете DEFAULT_POSITIONS. Если допустить, что это одна и также переменная, и учитывая, что мы не видели ваш код, возможно проблема заключается в том, что, так как объекты в js передаются по ссылке, а не по значению, в каком-то месте вы мутируете её значение.
Чтобы этого не допустить, можно или в каждом компоненте использующем эту переменную копировать её значение, или, что безопаснее, запретить экпорт самой переменной, а вместо неё экспортировать функцию, которая будет возвращать скопированное значение.
Чтобы скопировать значение, так как у вас массив массивов (это не двумерный массив, кстати), надо делать deep clone. То есть или использовать библиотеку типа https://www.npmjs.com/package/clone-deep или написать свою функцию
const cloneDeep = (arr: any[][]) => arr.map(x => x.map(y => y))
если вложенные элементы - объекты, то и их надо копировать
const cloneDeep = (arr: any[][]) => arr.map(x => x.map(y => {...y}))
Надеюсь я вас правильно понял
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости