Да, я думаю, что все в порядке, чтобы предотвратить запуск в первый раз. Кроме того, вы можете использовать Debouce , чтобы предотвратить слишком частый поиск. Например
function useDebounce(value, delay) {
const [debouncedValue, setDebouncedValue] = useState(value);
useEffect(
() => {
const handler = setTimeout(() => {
setDebouncedValue(value);
}, delay);
return () => {
clearTimeout(handler);
};
},
[value, delay],
);
return debouncedValue;
}
function App() {
const [dogImage, setDogImage] = useState('');
const [breed, setBreed] = useState('');
const debouncedValue = useDebounce(breed, 1000);
useEffect(() => {
const fetchDogImage = async () => {
const dogImage = await axios
.get(`https://dog.ceo/api/breed/${debouncedValue}/images/random`)
.then(response => response.data.message);
setDogImage(dogImage);
};
if (debouncedValue !== '') {
fetchDogImage();
}
}, [debouncedValue]);
return (
...
);
}