Используйте async / await и вызовите второй вызов API изнутри обратного вызова первого. Я также использовал useEffect с зависимостью реквизитов от первого вызова API, поэтому мой второй запрос срабатывает каждый раз при обновлении ловушки. Полезно, если вы извлекаете список с помощью вызова API, захватите URI для другого вызова API из тела первого. Надеюсь это поможет!
Редактировать: OP запросил некоторый код, так что здесь. В этом примере у меня есть функция fetchData, собирающая данные с помощью Ax ios, она может получить вызов из useEffect в EventList или useEffect в CardBody. EventList захватывает все события из моего GitHub. Внутри EventList у меня есть дочерний компонент CardBody, который имеет подпорку поля url из конечной точки API событий. Поскольку зависимость useEffect внутри CardBody установлена в [props], он будет запускаться каждый раз при смене реквизита. Я использую этот метод, потому что CardBody находится внутри файла events.map, который представляет собой данные, которые я получаю от конечной точки событий.
const fetchData = async (query, uri) => {
await axios.get(uri).then(res => {
const dataFromServer = res.data;
query(dataFromServer)
})
};
const CardBody = props => {
const [repo, setRepo] = useState([]);
useEffect(() => {
fetchData(setRepo, props.eventRepo)
}, [props]);
return (
<div>
Repo: <a href={repo.html_url}>{repo.name}</a>
</div>
);
};
const EventList = () => {
const [event, setEvent] = useState([]);
useEffect(() => {
fetchData(setEvent, "https://api.github.com/users/foestauf/events")
}, []);
return (
<CardBody eventRepo={id.repo.url}/>
)
}