Есть ли что-то встроенное в useFetch чтобы он не вызывался сразу

Ответ

В React нет встроенного хука useFetch, но если говорить о популярных библиотеках (например, react-fetch-hook или swr), то обычно они предоставляют возможность отложенного вызова.

Вот пример с react-fetch-hook:

const { data, error, fetch } = useFetch(url, { 
  lazy: true // не вызывать сразу
});

// Вызовем вручную позже
<button onClick={fetch}>Load Data</button>

Для нативного решения с useEffect можно просто обернуть вызов в условие:

const [shouldFetch, setShouldFetch] = useState(false);

useEffect(() => {
  if (shouldFetch) {
    fetch(url).then(...);
  }
}, [shouldFetch]);

Ключевые моменты:

  • Нет стандартного useFetch в React
  • Библиотеки часто предлагают lazy параметр
  • Вручную можно контролировать через состояние

Ответ 18+ 🔞

А, ну это классика, блядь! Ты про useFetch? Так его же в природе-то нет, ёпта! Это ж как тот Герасим — молчит и молчит, нихуя не говорит. Но народ, хитрая жопа, наваял библиотек, чтобы не городить свой велосипед каждый раз.

Смотри, если взять какую-нибудь популярную либу, типа react-fetch-hook, там часто есть опция lazy. Это как сказать: «Не лезь сразу, сука, в интернет, посиди спокойно!». Только когда кнопку нажмёшь — тогда и полетишь данные грузить.

const { data, error, fetch } = useFetch(url, { 
  lazy: true // не вызывать сразу
});

// Вызовем вручную позже
<button onClick={fetch}>Load Data</button>

Вот так, блядь. Нажал на кнопку — и понеслась пиздобратия с запросами.

А если ты, как истинный максималист, хочешь всё сам, на нативном хуке, то тут проще пареной репы. Заводишь стейт-флажок, типа shouldFetch, и в useEffect смотришь на него, как кот на сушёную воблу.

const [shouldFetch, setShouldFetch] = useState(false);

useEffect(() => {
  if (shouldFetch) {
    fetch(url).then(...);
  }
}, [shouldFetch]);

Включил флажок — useEffect проснулся, как медведь весной, и пошёл fetchить. Не включил — сидит, блядь, в берлоге и не шевелится. Всё гениальное — просто, как три копейки.

Короче, запомни, как «Муму»:

  1. Стандартного useFetch в React — нихуя нет.
  2. В библиотеках ищи lazy или подобную хуйню.
  3. Самому делать — это просто контролировать состояние, когда начинать эту вакханалию с сетью.

Вот и вся философия, в рот меня чих-пых!