Как вызвать restApi в новом api хука reactjs. И повторно использовать данные с помощью useEffects и useState? Я хочу просто повторно использовать данные в разных компонентах.
import { useState, useEffect } from "react";
export default function getAdvice(url) {
fetch(`http://api.adviceslip.com/advice`)
.then(res => res.json())
.then(res => console.info(res))
.catch(err => console.info(err)
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете создать настраиваемую ловушку, которая создает новую часть состояния 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/[email protected]/umd/react.production.min.js"></script>
<script src = "https://unpkg.com/[email protected]/umd/react-dom.production.min.js"></script>
<div id = "root"></div>
Да, конечно, спасибо за быстрый ответ.