Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

173
Views
El tamaño de la cuadrícula no cambia correctamente en React cuando cambia de estado

Estoy tratando de cambiar el tamaño de la cuadrícula en mi aplicación Conway game of life, pero cuando hago clic en el botón para configurar nuevos numCols/numRows, solo uno de ellos se ve afectado en la aplicación. ¿Cómo establezco efectivamente un nuevo estado para que la cuadrícula cambie de tamaño como se esperaba?

Tengo 2 botones en la aplicación, uno para hacer la cuadrícula más pequeña y otro para hacerla más grande. onClick activan la función sizeHandler & sizeHandler2.

Supongo que necesito establecer un nuevo estado en un método diferente, pero probé algunos métodos sin éxito.

 import React, { useState } from 'react' import './App.css'; function App() { const color = "#111" const [numRows, setNumRows] = useState(20) const [numCols, setNumCols] = useState(20) const generateEmptyGrid = () => { const rows = []; for (let i = 0; i < numRows; i++) { rows.push(Array.from(Array(numCols), () => 0)) } return rows } const [grid, setGrid] = useState(() => { return generateEmptyGrid(); }) const sizeHandler = () => { setNumRows(40) setNumCols(40) } const sizeHandler2 = () => { setNumRows(20) setNumCols(20) } // RENDER return ( <div className="page"> <div className="title"> <h1> Conway's Game Of Life </h1> <button onClick={sizeHandler}> Size+ </button> <button onClick={sizeHandler2}> Size- </button> </div> <div className="grid" style={{ display: 'grid', gridTemplateColumns: `repeat(${numCols}, 20px)` }}> {grid.map((rows, i) => rows.map((col, j) => <div className="node" key={`${i}-${j}`} style={{ width: 20, height: 20, border: 'solid 1px grey', backgroundColor: grid[i][j] ? color : undefined }} /> ))} </div> </div> ); } export default App;
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Lo que está haciendo es que quiere que un cambio de numRows y numCols tenga un efecto secundario. De hecho, casi lo dices tú mismo. React tiene un gancho para eso: useEffect :

 useEffect(() => { setGrid(generateEmptyGrid()) }, [numRows, numCols]);
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!