Здравствуйте! Столкнулся с проблемой, и не могу понять в чём дело. Есть массив объектов gameHistory, у каждого объекта есть свойство array, но когда я добавляю в массив новый объект, у которого есть свой array, то каждый gameHistory[i].array становиться равен gameState.array
Reducer:
const initialState = {
moveInfo: [],
gameHistory: []
};
export default function moveHistory(state=initialState, action) {
switch (action.type) {
case 'ADD_MOVE':
return {
...state,
moveInfo: [...state.moveInfo, action.move],
gameHistory: [...state.gameHistory, action.gameState]
}
break;
...
}
}
Action:
export const addMove = (currentPlayer, location, gameState) => {
//console.log выводит правильно, т.е. приходит gameState.array такой какой должен быть
return ({
type: 'ADD_MOVE',
move: `Ходит "${currentPlayer}" на позицию [${location.map(item => item+1)}]`,
gameState: gameState
})
}
Кусок кода, где этот action вызывается:
let move = getState().game.moveCount;
let array = [...getState().game.squaresValue];
let currentPlayer = getState().game.currentPlayer;
array[num[0]][num[1]] = currentPlayer; // num приходит в аргументах
dispatch(addMove(currentPlayer, num, {array: array, // именно в этом свойстве проблема
currentPlayer: currentPlayer, moveCount: move}));
В итоге получается, что каждый промежуточный console.log(array) выводит мне то, что я ожидаю увидеть, но subscribe показывает, что свойство array в каждом элементе массива gameHistory становится равно свойству array добавленного объекта gameState.
Как это исправить? Спасибо, за любую помощь!