Skip to content

Commit 42d1898

Browse files
committed
Add Loading Text
1 parent 30aa9a0 commit 42d1898

File tree

3 files changed

+76
-19
lines changed

3 files changed

+76
-19
lines changed

:q

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
src/App.js|15 col 25| Unexpected token, expected ";"

:w

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import React from 'react';
2+
import Search from './components/Search';
3+
4+
class App extends React.Component {
5+
state = {
6+
user: null,
7+
error: null,
8+
};
9+
10+
fetchUserData = async username => {
11+
try {
12+
this.setState({ loading: true });
13+
const res = await fetch(`https://api.github.com/users/${username}`);
14+
if (res.ok) {
15+
const data = await res.json();
16+
17+
return this.setState({
18+
user: data,
19+
});
20+
}
21+
22+
const error = (await res.json()).message;
23+
24+
this.setState({
25+
error,
26+
});
27+
} catch (err) {
28+
this.setState({
29+
error: 'There was some error',
30+
});
31+
}
32+
};
33+
34+
render() {
35+
const { error } = this.state;
36+
37+
return (
38+
<div>
39+
<Search fetchData={this.fetchUserData} />
40+
{error && <p className="text-danger">{error}</p>}
41+
</div>
42+
);
43+
}
44+
}
45+
46+
export default App;

src/App.js

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,37 +5,47 @@ class App extends React.Component {
55
state = {
66
user: null,
77
error: null,
8+
loading: false,
89
};
910

1011
fetchUserData = async username => {
11-
try {
12-
const res = await fetch(`https://api.github.com/users/${username}`);
13-
if (res.ok) {
14-
const data = await res.json();
12+
this.setState({ loading: true }, async () => {
13+
try {
14+
const res = await fetch(`https://api.github.com/users/${username}`);
15+
if (res.ok) {
16+
const data = await res.json();
1517

16-
return this.setState({
17-
user: data,
18-
});
19-
}
18+
return this.setState({
19+
user: data,
20+
loading: false,
21+
});
22+
}
2023

21-
const error = (await res.json()).message;
24+
const error = (await res.json()).message;
2225

23-
this.setState({
24-
error,
25-
});
26-
} catch (err) {
27-
this.setState({
28-
error: 'There was some error',
29-
});
30-
}
26+
this.setState({
27+
error,
28+
loading: false,
29+
});
30+
} catch (err) {
31+
this.setState({
32+
error: 'There was some error',
33+
loading: false,
34+
});
35+
}
36+
});
3137
};
3238

3339
render() {
34-
const { error } = this.state;
40+
const { error, loading } = this.state;
41+
3542
return (
3643
<div>
3744
<Search fetchData={this.fetchUserData} />
38-
{error && <p className="text-danger">{error}</p>}
45+
<div className="text-center pt-5">
46+
{loading && <p>Loading...</p>}
47+
{error && <p className="text-danger">{error}</p>}
48+
</div>
3949
</div>
4050
);
4151
}

0 commit comments

Comments
 (0)