-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathApp.js
More file actions
74 lines (66 loc) · 2.01 KB
/
App.js
File metadata and controls
74 lines (66 loc) · 2.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import React, { Component } from 'react'
import {
BrowserRouter as Router,
Route,
Switch,
} from "react-router-dom";
import './App.css';
import Detail from './Detail/Detail.js';
import About from './About/About.js';
import Map from './Map/Map.js';
import Home from './Home/Home.js'
import PrivateRoute from './PrivateRoute.js';
import Header from './Header/Header.js';
// nice work on the folder structure of this project! very easy to read!
export default class App extends Component {
state = {
token: localStorage.getItem('TOKEN') || '',
username: localStorage.getItem('USERNAME') || ''
}
handleTokenChange = (myToken) => {
this.setState({ token: myToken });
localStorage.setItem('TOKEN', myToken);
}
handleUsernameChange = (myUsername) => {
this.setState({ username: myUsername });
localStorage.setItem('USERNAME', myUsername);
}
logOut = () => {
this.handleTokenChange('');
this.handleUsernameChange('')
}
render() {
return (
<div>
<Router>
<Header token={this.state.token} username={this.state.username} logOut={this.logOut} />
<Switch>
<Route exact path='/'
render={(routerProps) => <Home
{...routerProps} handleTokenChange={this.handleTokenChange}
handleUsernameChange={this.handleUsernameChange} />}
/>
<Route exact path='/about'
render={(routerProps) => <About
{...routerProps} />}
/>
<PrivateRoute
token={this.state.token}
exact
path='/map'
render={(routerProps) => <Map
{...routerProps} token={this.state.token}
/>} />
<PrivateRoute
token={this.state.token}
exact
path='/detail/:id'
render={(routerProps) => <Detail
{...routerProps} token={this.state.token}
/>} />
</Switch>
</Router>
</div>
)
}
}