Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

199
Visualizações
TypeError: squares.slice is not a function on trying to make a copy of the array

In my component in react, I am trying to make a copy of an array. But the function keeps failing on the point when I actually call the slice method. Here's my full code for better context

const Board = ()=>{

    const [squares, setSquares] = useState(Array(9).fill("")) 
    const [isX , setIsX] = useState(true)
    const [stepNumber, setStepNumber] = useState(0)
    const [winner, setWinner] = useState(null)
    console.log(`squares is ${Array.isArray(squares)}`, squares.slice())

    const onClick = (i)=>{
        console.log("On CLick")
        if(winner || stepNumber>9) return;
        console.log(squares)
        const newSquares =  squares.slice()
        (isX) ? newSquares[i] = "X" : newSquares[i]= "O"
        setIsX(!isX)
        
        setWinner(newSquares)
        if(winner){
            console.log(winner)
        }
        setSquares(newSquares)
        setStepNumber(stepNumber+1)

    }
    return(
        <div className = "board">
            {squares.map((square , i) => {
                return(
                    <Square key={i}  data-key={i} value={square}
                    onClick = {()=>onClick(i)} />)
            })}
        </div>
    )
}

The line where I declare newSquares keeps failing with the error:TypeError: squares.slice(...) is not a function . Can somebody please tell what am I doing wrong?

EDIT: Here's the output of squares ['', '', '', '', '', '', '', '', '']

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

In a one-line conditional statement, you are doing the assignment wrong. The problem is in this line:

(isX) ? newSquares[i] = "X" : newSquares[i]= "O"

Change that to:

newSquares[i] = isX ? "X" : "O"

Suggestion

Instead of .slice() I would change the newSquares like this:

const newSquares = squares.map((sq, index) => index === i ? (isX ? "X" : "O") : sq)
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda