Skip to content

Instantly share code, notes, and snippets.

@yonibot
Created November 18, 2019 19:24
Show Gist options
  • Save yonibot/f58affe7db5ecf808aaee7a069d2c3bc to your computer and use it in GitHub Desktop.
Save yonibot/f58affe7db5ecf808aaee7a069d2c3bc to your computer and use it in GitHub Desktop.
step 2
// App.js
import { useWeatherService } from './useWeatherService';
...
function App({coords}) {
const [ currentUnit, setUnit ] = useState(TEMPERATURE_UNITS.metric);
const [ weather, getWeather ] = useWeatherService(); // <- initializing the hook
useEffect(() => {
if (coords) {
const { latitude: lat, longitude: lon } = coords;
getWeather(lat, lon, currentUnit.sysName); // <- calling the hook
}
}, [coords, currentUnit]);
...
return (
<div className="App">
...
</div>
);
}
export default geolocated()(App);
// useWeatherService.js
import { useState } from 'react';
const useWeatherService = () => {
const [weather, setWeather] = useState();
const getWeather = async (lat, long, unit) => {
const weatherReq = await fetch(/* apiUrl */);
...
...
setWeather(weather);
}
return [ weather, getWeather ];
}
export { useWeatherService }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment