Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

188
Vistas
Why is originalBoard being updated also?

I'm making a sudoku game and have a variable for the board at the moment and the original board. When the user inputs a number the board is updated but for some reason the originalBoard variable is also. I only change the value of board so I'm not sure why originalBoard is also updated.

input code:

export default function Block(props) {
let { boxNumber, blockNumber } = props
const { board, originalBoardSlots, isSolved } = useBoard()
const dispatch = useDispatch()
const number = board[boxNumber][blockNumber]
let numberInput;
let border = ""

if(blockNumber === 2 || blockNumber === 5)
    border += " b-right"
if(boxNumber === 2 || boxNumber === 5)
    border += " b-bottom"

if(originalBoardSlots[boxNumber][blockNumber]){
    numberInput = (
        <input 
            type="number"
            className={'number og-number' + border}
            value={number}
            min="0"
            max="9"
            disabled
        />
    )
}else {
    numberInput = (
        <input 
            type="number"
            className={'number non-og-number' + border}
            value={number !== 0 ? number : ""} 
            min="0"
            max="9"
            onChange={(e) => handleChange(e)}
            disabled={isSolved}
        />
    )
}

const handleChange = (e) => {
    const newNumber = e.target.value === "" ? 0 : parseInt(e.target.value)
    if(newNumber <= 9 && newNumber >= 0){
        dispatch({
            type: "set-number-slot",
            payload: {
                boxNumber: boxNumber,
                blockNumber: blockNumber,
                number: newNumber
            }
        })
    }
}

return (
    numberInput
)}

reducer code:

case "set-number-slot":
        const { boxNumber, blockNumber, number } = action.payload
        state.board[boxNumber][blockNumber] = number
        const newBoard = state.board
        return {
            ...state,
            board: newBoard
        }

function for setting variables originally:

export default async function getBoard(){
const response = await fetch("https://sugoku.herokuapp.com/board?difficulty=easy");
const data = await response.json();
const board = await data.board
const originalBoardSlots = await board.map(box => {
    return box.map(block => block !== 0)
})
const state = {
    board: board, 
    originalBoard: board,
    originalBoardSlots: originalBoardSlots
}
return state}
about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda