Вызов API обязательно будет сделан в компоненте. Вот так:
const Component = () => {
useEffect(() => {
const fn = async () => {
await apiCall()
}
fn()
}, [])
}
Но ваш вопрос состоит в том, где вы должны его хранить.
Это просто:
- Если данные, которые вы получаете, будут использоваться во всем приложении, тогда Redux - отличный вариант. Он также обеспечивает постоянство данных с минимальными усилиями, используя
redux-persist
(https://github.com/rt2zz/redux-persist), так что это не только глобальный объект, к которому вы можете получить доступ.
Особенности:
а. Настойчивость б. Глобальное состояние, доступное для всех c. Улучшенная отладка с помощью Redux dev tools
Если вы хотите избежать только
prop drilling
, тогда
React.Context
- хороший вариант Если вы используете
drilling
2 или 3 уровня с вашими реквизитом, просто не перебивайте их, используя
Context