如何解决登录后即时通讯未重定向到主页
登录后我没有被推送到根目录。 我不知道这里出了什么问题。在控制台中,我可以看到登录成功。即使我没有被推送到主页 Login.js
我不知道历史道具是否有问题。无法将我重定向到首页。路由在其他情况下也可以正常工作。仅在登录后无法将我推送到主页。香港专业教育学院试图更改从根目录到其他组件的路由,以检查问题是否出在组件上。但是它也失败了..我没有用于ROUTES的单独文件夹。我已经在App.js中建立了路线
import React,{ useState } from "react";
import "./Login.css";
import { Link,useHistory } from "react-router-dom";
import axios from 'axios';
import { ToastContainer,toast } from 'react-toastify';
import { authenticate,isAuth } from "./utils/helpers";
const Login = ({ history }) => {
const [formInputs,setFormInputs] = useState({
email: "",password: "",buttonText: "Sign in",});
const { buttonText,email,password } = formInputs;
const handleChange = (evt) => {
setFormInputs({
...formInputs,[evt.target.name]: evt.target.value,});
};
const handleSubmit = (evt) => {
// Avoid page refresh
evt.preventDefault();
setFormInputs({ ...formInputs,buttonText: "Singing in..." });
axios.post("/signin",{
email,password,}).then((res) => {
console.log("Signed in . Yaay!!",res);
authenticate(res,() => {
setFormInputs({
...formInputs,name: "",email: "",buttonText: "Signed in",});
isAuth() ? history.push("/") : history.push("/signin");
});
}).catch((err) => {
if(err && err.response && err.response.data) {
toast.error(err.response.data.error);
}
setFormInputs({
...formInputs,});
});
};
return (
<div className="login">
<Link to="/">
<img
className="login__logo"
src="https://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/Amazon_logo.svg/1024px-Amazon_logo.svg.png"
alt=""
/>
</Link>
<ToastContainer />
<div className="login__container">
<h1>Sign in</h1>
<form>
<h5>E-mail</h5>
<input onChange={handleChange}
name="email"
type="email"
value={email} />
<h5>Password</h5>
<input onChange={handleChange}
name="password"
type="password"
value={password} />
<button type="submit" onClick={handleSubmit} className="login__signInButton">{buttonText}</button>
</form>
<Link to="/auth/password/forgot" className="login__forgotPassword">
Forgot Password
</Link>
<p>
By continuing,you agree to Amazon's Conditions of Use and Privacy Notice.
</p>
<Link to="/signup">
<button className="login__registerButton">Create your Amazon Account</button>
</Link>
</div>
</div>
);
}
export default Login;
browser console after login sucess App.js
import React from "react";
import "./App.css";
import Header from "./Header";
import { BrowserRouter as Router,Switch,Route } from "react-router-dom";
import Home from "./Home";
import Checkout from "./Checkout";
import Login from "./Login";
import Signup from "./Signup";
import axios from "axios";
import { getCookie,signout } from "./utils/helpers";
import Forgot from "./Forgot";
import Activate from "./Activate";
import Reset from "./Reset";
axios.defaults.baseURL = process.env.REACT_APP_SERVER_URL;
axios.interceptors.request.use((config) => {
const token = getCookie("token");
config.headers.Authorization = token;
return config;
});
// null for success,and second parameter cllback for failure
axios.interceptors.response.use(null,(error) => {
if(error.response.status === 401) {
signout(() => {
window.location.href = "/";
});
}
return Promise.reject(error);
});
function App() {
return (
<Router>
<div className="App">
<Switch>
<Route path="/checkout">
<Header />
<Checkout />
</Route>
<Route path="/login">
<Login />
</Route>
<Route path="/signup" exact component={Signup} />
<Route path="/auth/password/forgot" exact component={Forgot} />
<Route path="/auth/activate/:token" exact component={Activate} />
<Route path="/auth/password/reset/:token" exact component={Reset} />
<Route path="/">
<Header />
<Home />
</Route>
</Switch>
</div>
</Router>
);
}
export default App;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。