-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMainP.js
More file actions
91 lines (87 loc) · 2.06 KB
/
MainP.js
File metadata and controls
91 lines (87 loc) · 2.06 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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import React, { Component } from "react";
import {
BrowserRouter as Router,
Link,
NavLink,
Redirect,
Prompt
} from "react-router-dom";
import Route from "react-router-dom/Route";
const User = params => {
return <h1>Welcome {params.username}</h1>;
};
class MainP extends Component {
state = {
loggedIn: false
};
loggedHandler = () => {
this.setState(prevState => ({
loggedIn: !prevState.loggedIn
}));
};
render() {
return (
<Router>
<div className="App">
<ul>
<li>
<NavLink to="/" exact activeStyle={{ color: "red" }}>
Home
</NavLink>
</li>
<li>
<NavLink to="/about" exact activeStyle={{ color: "red" }}>
About
</NavLink>
</li>
<li>
<NavLink to="/user/User" exact activeStyle={{ color: "red" }}>
User
</NavLink>
</li>
</ul>
<Prompt
when={!this.state.loggedIn}
message={location => {
return location.pathname.startsWith("/user") ? "R u sure?" : true
}}
/>
<input
type="button"
value={this.state.loggedIn ? "log out" : "log in"}
onClick={this.loggedHandler.bind(this)}
/>
<Route
path="/"
exact
strict
render={() => {
return <h1>Welcome Mercy</h1>;
}}
/>
<Route
path="/about"
exact
strict
render={() => {
return <h1>Its About</h1>;
}}
/>
<Route
path="/user/:username"
exact
strict
render={({ match }) =>
this.state.loggedIn ? (
<User username={match.params.username} />
) : (
<Redirect />
)
}
/>
</div>
</Router>
);
}
}
export default MainP;