When I use history.push ()
method, from signup to log in, goes to a particular API/URLenter code here
but does not render the login component.
JavaScript
x
147
147
1
import React, { useState } from "react";
2
import "./UserRegister.css";
3
import { Link } from "react-router-dom";
4
import ing from "../assets/ing.png";
5
import { message } from "antd";
6
import { createBrowserHistory } from "history";
7
const UserRegister = () => {
8
const history = createBrowserHistory();
9
const [role, setRole] = useState("");
10
const [username, setUsername] = useState("");
11
const [email, setEmail] = useState("");
12
const [mobile, setMobile] = useState("");
13
const [password, setPassword] = useState("");
14
const [confirmpassword, setConfrimpassword] = useState("");
15
16
console.log({
17
role,
18
username,
19
email,
20
mobile,
21
password,
22
confirmpassword,
23
});
24
const fetchRegister = () => {
25
fetch("/api/user/userregister", {
26
method: "post",
27
headers: { "Content-Type": "application/json" },
28
body: JSON.stringify({
29
role,
30
username,
31
email,
32
mobile,
33
password,
34
confirmpassword,
35
}),
36
})
37
.then((res) => res.json())
38
.then((data) => {
39
console.log(data);
40
if (data.error) {
41
message.error(data.error);
42
} else {
43
history.push("/login");
44
}
45
});
46
};
47
48
return (
49
<div className="body_body">
50
<div className="signup-container">
51
<div className="welcome-img">
52
<img src={ing} alt="welcome image" height="350px" width="450px" />
53
</div>
54
55
<div class="form-container">
56
<h2>Create your Account Today ! </h2>
57
58
<p class="title">Sign Up</p>
59
60
<div class="signup-form">
61
<div class="form-item selector">
62
<span class="item-indicator"></span>
63
<label className="select_label" for="role">
64
Choose your role
65
</label>
66
<select
67
id="role"
68
className="role_select"
69
value={role}
70
onChange={(e) => setRole(e.target.value)}
71
>
72
<option value="Student">Student</option>
73
<option value="Company">Company</option>
74
<option value="Mentor">Mentor</option>
75
</select>
76
</div>
77
<div class="form-item fullname">
78
<input
79
type="text"
80
placeholder="Please enter your username "
81
value={username}
82
onChange={(e) => setUsername(e.target.value)}
83
/>
84
<span class="item-indicator"></span>
85
</div>
86
<div class="form-item email">
87
<input
88
type="text"
89
placeholder="Enter your email"
90
value={email}
91
onChange={(e) => setEmail(e.target.value)}
92
/>
93
<span class="item-indicator"></span>
94
</div>
95
96
<div class="form-item confirm-password">
97
<input
98
type="text"
99
placeholder=" Enter Mobile No"
100
name="mobile"
101
value={mobile}
102
onChange={(e) => setMobile(e.target.value)}
103
/>
104
<span class="item-indicator"></span>
105
</div>
106
<div class="form-item password">
107
<input
108
type="password"
109
placeholder="Enter Password"
110
name="password"
111
value={password}
112
onChange={(e) => setPassword(e.target.value)}
113
/>
114
<span class="item-indicator"></span>
115
</div>
116
117
<div class="form-item confirm-password">
118
<input
119
type="password"
120
name="Confirmpassword"
121
placeholder="Enter Confirm Password"
122
value={confirmpassword}
123
onChange={(e) => setConfrimpassword(e.target.value)}
124
/>
125
<span class="item-indicator"></span>
126
</div>
127
128
<p class="login">
129
Already have an account?
130
<Link to="login">Login</Link>
131
</p>
132
<div class="actions">
133
<button type="submit" onClick={() => fetchRegister()}>
134
Sign Up
135
</button>
136
</div>
137
</div>
138
</div>
139
</div>
140
</div>
141
);
142
};
143
144
export default UserRegister;
145
146
enter code here
147
Advertisement
Answer
Do not create new history.
You can use useHistory
that exported from react-router-dom
instead and get the current history. It would be something like this:
JavaScript
1
6
1
const history = useHistory();
2
3
function doRedirect() {
4
history.push("/login");
5
}
6