Здравствуйте, ситуация такая:
При работе с API (через fetch) закидываю файлы в стэйт редакса
Проблема в том, что когда я пытаюсь прописать через connect какие-то переменные и использовать их в коде, API не успевает загрузиться и получается так, что стэйт в редаксе пустует
Соответственно это вызывает ошибки по типу Cannot read property 'something' of undefined
Есть другие способы работы, кроме как (if props.wrap.something !== undefined)?
Запросу к серверу храню в отдельных экшонах
+ как отследить, прошел ли запрос?
Например:
const [isLoading, setIsLoading] = useState(true);
useEffect(()=>{
let lat;
let long;
let proxy = 'https://cors-anywhere.herokuapp.com/';
navigator.geolocation.getCurrentPosition(position =>{
lat = position.coords.latitude;
long = position.coords.longitude;
props.onGetWeather(`${proxy}https://api.darksky.net/forecast/8f2f993672f627f5cc108000ff1f78bd/${lat},${long}`)
setIsLoading(false);
});
}, [])
export default connect(
state =>({
weather: state.weather,
}),
dispatch =>({
onGetWeather: (url) =>{
dispatch(getWeather(url))
}
})
)(Weather)
export function getWeatherSuccess(data){
return{
type: 'FETCH_WEATHER_DATA',
data
}
}
export function getWeather(url){
return (dispatch)=>{
fetch(url, {method: 'GET'})
.then(response =>{
if(!response.ok){
console.log('Error');
}
return response
})
.then(response => response.json())
.then(data => dispatch(getWeatherSuccess(data)))
}
}
Как отследить, что props.onGetWeather прошел?