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

89
Visualizações
useEffect does not trigger after initial render

I have an array of 16 objects and I use "number" prop to cut unwanted elements. So if I want an array of 8 elements I would type:

<Images number="8"/>

However my useEffect does not run after initial render, but only after I make a change in the array later on, this returns all 16 elements, if I make a typo, wait for a bug screen to render and fix a typo, my browser shows 8 elements as it should. This is the rest of my code:

const Images = (props) => {
    const [deck, setDeck] = useState(data);
    // data.length is equal 16

    const sliceDeck = () => {
        data.splice(parseInt(props.number, 10), data.length)
    }
    
    useEffect(()=>{
        sliceDeck()
        setDeck(data)
    }, [])

    return (
        <>
        <div className="img-container">
           {deck.map(object => <div className="img-on" key={object.id}><img src={object.src} alt=""/></div>)}
        </div>

        </>
    );
  }
  
  export default Images;
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

You need to add props.number to the dependency array to make sure it runs every time there is an update to it

const Images = (props) => {
    const [deck, setDeck] = useState(data);
    
    useEffect(()=>{
      if(!isNaN(props?.number)){
        const temp = data.splice(parseInt(props?.number, 10), data.length)
        setDeck(temp)
      }
    }, [props?.number])

    return (
        <>
          <div className="img-container">
            {deck.map(object => <div className="img-on" key={object.id}>
              <img src={object.src} alt=""/>
            </div>)}
          </div>
        </>
    );
  }
  
  export default Images;

emphasized text

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