Вы можете создать пользовательский хук, который создает новый элемент состояния advice
, который вы устанавливаете после завершения сетевого запроса.
Возвращает функцию из функции, заданной для useEffect
, которая отменяет ваш запроскогда компонент, который его использует, повторно визуализируется или компонент отключается.Вы также можете указать url
в массиве в качестве второго аргумента для useEffect
, чтобы повторный запуск сетевого запроса происходил только тогда, когда url
действительно изменился.
Пример
const { useState, useEffect } = React;
function useAdvice(url) {
const [advice, setAdvice] = useState(null);
useEffect(
() => {
const timeout = setTimeout(() => {
setAdvice(`Use ${url} to get some nice advice`);
}, 1000);
return () => clearTimeout(timeout);
},
[url]
);
return advice;
}
function App() {
const advice = useAdvice("https://google.com");
return <div>{advice}</div>;
}
ReactDOM.render(<App />, document.getElementById("root"));
<script src="https://unpkg.com/react@16.7.0-alpha.0/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@16.7.0-alpha.0/umd/react-dom.production.min.js"></script>
<div id="root"></div>