Ответ
В 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ить. Не включил — сидит, блядь, в берлоге и не шевелится. Всё гениальное — просто, как три копейки.
Короче, запомни, как «Муму»:
- Стандартного
useFetchв React — нихуя нет. - В библиотеках ищи
lazyили подобную хуйню. - Самому делать — это просто контролировать состояние, когда начинать эту вакханалию с сетью.
Вот и вся философия, в рот меня чих-пых!