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

369
Visualizações
Cómo cambiar la imagen y el color de fondo cada x segundos. Reaccionar

Resultado deseado = cambiar la imagen y el color de fondo cada x segundos.

Problema con el que me encuentro = no muestra todos los colores e imágenes. Va de rosa -> naranja -> rosa -> naranja, saltando azul y verde.

 import * as React from 'react'; // Images import heroPink from './hero-pink.png'; import heroBlue from './hero-blue.png'; import heroOrange from './hero-orange.png'; import heroGreen from './hero-green.png'; import logo from './oddballs_logo.svg'; const colors = [ "#F9B199", "#237E95", "#D79446", "#C2C138" ]; const images = [ heroPink, heroBlue, heroOrange, heroGreen ]; export default function App() { const [value, setValue] = React.useState(0); React.useEffect(() => { const interval = setInterval(() => { setValue((v) => (v === 3 ? 0 : v + 1)); }, 1000); }, []); return ( <div className="App" style={{ backgroundColor: colors[value] }}> <img src={images[value]}/> </div> ); }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Debe borrar su intervalo con la declaración de devolución. Eso significa que, en cada desmontaje, el intervalo se borrará y cuando este componente se monte, se registrará un nuevo intervalo. Funciona bien para mí, espero que tu problema también se resuelva.

 React.useEffect(() => { const interval = setInterval(() => { setValue((v) => { return v === 4 ? 0 : v + 1; }); }, 1000); return () => clearInterval(interval); }, []);

Recuerde, borrar cualquier evento de intervalo es importante. De lo contrario, se produce una fuga de memoria.


Aquí está el ejemplo completo:

 import React from "react"; const colors = ["#92c952", "#771796", "#24f355", "#d32776", "#f66b97"]; const images = [ "https://via.placeholder.com/150/92c952", "https://via.placeholder.com/150/771796", "https://via.placeholder.com/150/24f355", "https://via.placeholder.com/150/d32776", "https://via.placeholder.com/150/f66b97" ]; export default function App() { const [value, setValue] = React.useState(0); React.useEffect(() => { const interval = setInterval(() => { setValue((v) => { return v === 4 ? 0 : v + 1; }); }, 1000); return () => clearInterval(interval); }, []); return ( <div className="App" style={{ backgroundColor: colors[value] }}> <img src={images[value]} alt="img" style={{ border: "3px solid" }} /> </div> ); }
about 4 years ago · Juan Pablo Isaza Relatório

0

Puede usar la función setInterval para lograr el comportamiento. Aquí he usado dos estados para los índices de color e imagen.

 const colors = ["#eb4034", "#ebdb34", "#34eb37"]; const images = [ "https://images.unsplash.com/photo-1649894158666-c10421960f13?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=2071&q=50", "https://images.unsplash.com/photo-1648737154448-ccf0cafae1c2?ixlib=rb-1.2.1&ixid=MnwxMjA3fDF8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=2070&q=80", "https://images.unsplash.com/photo-1585974738771-84483dd9f89f?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1072&q=80" ]; export default function App() { const [image, setImage] = useState(0); const [color, setColor] = useState(0); useEffect(() => { const interval = setInterval(() => { if (image === images.length - 1 && color === colors.length - 1) { setImage(0); setColor(0); } else { setImage(image + 1); setColor(color + 1); } }, 3000); return () => { clearInterval(interval); }; }, [image, color]); return ( <div style={{ backgroundColor: `${colors[color]}`, padding: "20px" }}> <img src={images[image]} style={{ width: "100%" }} alt="img" /> </div> ); }

También limpie la fase de desmontaje del intervalo.

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