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

167
Vistas
React.js niño que no actualiza una variable de padre a través de la función

Así que estoy aprendiendo a React.js en este momento y he estado luchando con este problema. Estoy tratando de hacer tres en raya, así que tengo este código:

 import './App.css';
import { useState } from "react"

const X = 1;
const O = -1;
const EMPTY = 0;

var Square = ({idx, click}) => 
{
 let [val, setVal] = useState(EMPTY);
 return (
 <button onClick={() => {click(setVal, idx);}}>{val}</button>
 )
}

var Logger = ({state}) =>
{
 return (
 <button onClick={() => {console.log(state);}}>log</button>
 )
}

var App = () =>
{
 let [turn, setTurn] = useState(X);
 let state = new Array(9).fill(EMPTY);
 let squares = new Array(9);

 let click = (setValFunc, idx) => 
 {
 setTurn(-turn);
 setValFunc(turn);
 state[idx] = turn;
 }

 for (let i = 0 ; i < 9 ; i++)
 {
 squares[i] = (<Square click={click} idx={i}/>);
 }

 return (
 <>
 <Logger state={state} />
 <div>
 {squares}
 </div>
 </>
 )
}

export default App;

por lo tanto, los cuadrados ESTÁN cambiando cuando hago clic en ellos, pero cuando hago clic en el botón de registro para registrar la matriz de estado en la consola, la matriz de estado sigue siendo ceros.

¿que me estoy perdiendo aqui?

almost 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Su estado tiene que ser un state React nuevamente. De lo contrario, el estado que definió dentro de la App como una variable local solo dura hasta la próxima representación.

  1. Mantener el estado de tic-tac-toe dentro de un gancho useState
 let [state, setState] = useState(new Array(9).fill(EMPTY));
  1. Actualice el controlador de clics en consecuencia.
 let click = (setValFunc, idx) => {
 setTurn(-turn);
 setValFunc(turn);
 setState((prevState) =>
 prevState.map((item, index) => (index === idx ? turn : item))
 );
 };

Editar agitated-mountain-cfu7o3

almost 4 years ago · Santiago Trujillo Denunciar

0

En React, el concepto de estado es importante.

En su caso, necesita comprender cuál es su estado y cómo puede modelarlo.

Si estás haciendo un Tic-Tac-Toe tendrás:

  • el juego de mesa: una "mesa" de 3 por 3 con signos vacíos, cruzados o circulares

Esto se puede modelar mediante una matriz de 9 elementos como lo hizo.

Pero luego debe almacenar esta matriz usando useState de lo contrario, entre -re-renderizaciones, su matriz de state se recreará cada vez.

Te aconsejo que leas https://reactjs.org/docs/lifting-state-up.html y https://beta.reactjs.org/learn .

almost 4 years ago · Santiago Trujillo Denunciar
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