Skip to content

Commit 5e9efd2

Browse files
committed
refactor
1 parent 7e9d353 commit 5e9efd2

File tree

1 file changed

+17
-21
lines changed

1 file changed

+17
-21
lines changed

seasons-hooks/src/index.js

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,29 @@
1-
import React from 'react';
1+
import React, { useState, useEffect } from 'react';
22
import ReactDOM from 'react-dom';
33
import SeasonDisplay from './SeasonDisplay';
44
import Spinner from './Spinner';
55

6-
class App extends React.Component {
7-
state = { lat: null, errorMessage: '' };
6+
const App = () => {
7+
const [lat, setLat] = useState(null);
8+
const [errorMessage, setErrorMessage] = useState('');
89

9-
componentDidMount() {
10+
useEffect(() => {
1011
window.navigator.geolocation.getCurrentPosition(
11-
position => this.setState({ lat: position.coords.latitude }),
12-
err => this.setState({ errorMessage: err.message })
12+
position => setLat(position.coords.latitude),
13+
err => setErrorMessage(err.message)
1314
);
14-
}
15-
16-
renderContent() {
17-
if (this.state.errorMessage && !this.state.lat) {
18-
return <div>Error: {this.state.errorMessage}</div>;
19-
}
15+
}, []);
2016

21-
if (!this.state.errorMessage && this.state.lat) {
22-
return <SeasonDisplay lat={this.state.lat} />;
23-
}
24-
25-
return <Spinner message="Please accept location request" />;
17+
let content;
18+
if (errorMessage) {
19+
content = <div>Error: {errorMessage}</div>;
20+
} else if (lat) {
21+
content = <SeasonDisplay lat={lat} />;
22+
} else {
23+
content = <Spinner message="Please accept location request" />;
2624
}
2725

28-
render() {
29-
return <div className="border red">{this.renderContent()}</div>;
30-
}
31-
}
26+
return <div className="border red">{content}</div>;
27+
};
3228

3329
ReactDOM.render(<App />, document.querySelector('#root'));

0 commit comments

Comments
 (0)