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

120
Visualizações
indexación entre estados en reaccionar

Estoy tratando de crear un detector de eventos que proporcione datos al componente secundario.

tengo dos estados

 [data,setData]=useState([]) [playData,setPlayData]= useState([])

Obtengo datos de una API usando fetch y UseEffect con el parámetro [] para usarlos solo cuando se inicia la aplicación

 fetch(API_URL) .then(res=>res.json) .then(data=>setData(data))

en el componente de la aplicación tengo un componente de niños que recibe los datos de reproducción y una función de escucha de eventos

 <Children data={playData} click={getDataOnClick} />

ahora quiero que este detector de eventos envíe datos de los datos como prop uno por uno a medida que se hace clic, como siguiente, siguiente, siguiente ... hasta que se agoten los datos

entonces lo que hago es definir

 const box = data

y use

 function getDataOnClick (event){ setPlaydata(prevdata=>{ return [...prevdata,box[prevdata.length+1]] }}

Recibo un error: el cuadro no es iterable o similar cuando intento abrirlo con otros métodos de matriz. Veo que los métodos de matriz no funcionan al iterar sobre los estados, ¿supongo? ¿¿Cómo puedo solucionar esto?? ¿Hay un gancho que me falta aquí? Además, Slice no funciona con el estado y los objetos que he hecho iguales al estado.

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

0

Solo tiene que usar prevdata.length en lugar de prevdata.length + 1 o, de lo contrario, se saltará un elemento. Y puede verificar si playData tiene todos los elementos que están en data antes de presionar más.

Creé una caja de arena que hace lo que estás tratando de hacer.

Editar confident-glade-9x6e1

 function Child({ onNext, playData }) { return ( <div> <p>{playData}</p> <button onClick={onNext}>Next</button> </div> ); } export default function App() { const [data, setData] = useState([]); const [playData, setPlayData] = useState([]); useEffect(() => { const fakePromise = Promise.resolve( Array(50) .fill() .map((_, i) => i) ); (async () => { setData(await fakePromise); })(); }, []); const onNext = () => { setPlayData((prev) => data.length === prev.length ? prev : [...prev, data[prev.length]] ); }; return ( <div className="App"> <Child playData={playData} onNext={onNext} /> </div> ); }
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