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

257
Visualizações
Displaying an image from an API In React

I am trying to display the image of the breed selected by the user in this code but it is not working,

any ideas or hints as of why?

Thank you

import React, { useState, useEffect } from 'react';
import './breed-image.css';

function BreedImage () {
    const [breed, selectedBreed] = useState('');

    useEffect(() => {
        fetchImage();
        }, []);

    const fetchImage = async () => {
        const res = await fetch(`https://dog.ceo/api/breed/${breed}/images/random`)
        const data = await res.json();
        const imageUrl = data.message
        selectedBreed(imageUrl);
        };

    return (
      <div className="image-container">
        <img className="image-card" src={breed} alt="doggopicture" />
      </div>
    );
  
}

export default BreedImage;
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

There's some weird logic in here that doesn't make sense. breed is initialized to an empty string. Then, in your useEffect you have an empty dependencies array, which means it will be called once. Which means your API request hits https://dog.ceo/api/breed//images/random which presumably would fail (since breed was '').

Most likely you instead want:

import React, { useState, useEffect } from 'react';
import './breed-image.css';

function BreedImage () {
    const [breed, setBreed] = useState('');
    const [url, setUrl] = useState('');

    useEffect(() => {
        fetchImage();
    }, [breed]);

    const fetchImage = async () => {
        const res = await fetch(`https://dog.ceo/api/breed/${breed}/images/random`)
        const data = await res.json();
        setUrl(data.message);
    };

    return (
    <>
      <DogPicker onChange={(breed) => setBreed(breed)} />
      <div className="image-container">
        <img className="image-card" src={url} alt="doggopicture" />
      </div>
    </>
    );
  
}

export default BreedImage;

where you'd pass setBreed to some other component. Or, you could pass breed down to this component as a prop, and again use useEffect to watch for changes.

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