【发布时间】:2022-01-06 04:08:06
【问题描述】:
我需要在登录后将用户重定向到他们的个人资料页面,然后尝试在 Axios 中使用 history.push()。这是我的登录表单代码。我使用onClick按钮获取用户的电子邮件和密码,然后将它们重定向到新页面ClientProfile:
SignIn.js
import React from 'react';
import {Form, Button} from 'react-bootstrap';
import { useState } from 'react';
import Axios from 'axios';
import { useHistory } from 'react-router-dom';
function SignIn() {
const history = useHistory();
const [userEmail, setEmail] = useState("");
const [userPassword, setPassword] = useState("");
//after onClick
const signIn = () => {
//get user input
Axios.post("http://localhost:8800/signIn", {
userEmail: userEmail,
userPassword: userPassword,
}).then((res) => {
console.log(res);
history.push('/clientprofile');
})};
return (
<Form>
<Form.Group className="mb-3" controlId="formBasicEmail">
<Form.Label>Email address</Form.Label>
<Form.Control type="email" placeholder="Enter your email here"
onChange = {(event) => {
setEmail(event.target.value);
}}
/>
</Form.Group>
<Form.Group className="mb-3" controlId="formBasicPassword">
<Form.Label>Password</Form.Label>
<Form.Control type="password" placeholder="Enter your password here"
onChange = {(event) => {
setPassword(event.target.value);
}}
/>
</Form.Group>
<Button variant="primary" type="submit" onClick={ signIn }>
Submit
</Button>
</Form>
)
}
export default SignIn;
我在 app.js 中定义了路由:
import './App.css';
import { Navbar, Nav, Container, Image } from 'react-bootstrap';
import About from './Components/About';
import Services from './Components/Services';
import Help from './Components/Help';
import SignIn from './Components/SignIn';
import ClientProfile from './Components/ClientProfile';
import { Switch, Route, NavLink } from 'react-router-dom';
function App() {
return (
<div className="App">
<Navbar className="mainNav">
<Container>
<Nav className="right-side me-auto">
<Nav.Link as = {NavLink} to = '/' className="text-white p-3">About Us</Nav.Link>
<Nav.Link as = {NavLink} to = '/ourservices' className="text-white p-3">Our Services</Nav.Link>
<Nav.Link as = {NavLink} to = '/help' className="text-white p-3">Help</Nav.Link>
<Nav.Link as = {NavLink} to = '/signin' className="rounded-pill m-1 px-3 py-2 text-white signInBtn">Sign In</Nav.Link>
</Nav>
</Container>
</Navbar>
<br/>
<Switch>
<Route exact path = "/"><About /></Route>
<Route path = "/ourservices" ><Services /></Route>
<Route path = "/help" ><Help /></Route>
<Route path = "/signin"><SignIn /></Route>
//the route is being defined here
<Route path = "/clientprofile"><ClientProfile/></Route>
</Switch>
</div>
);
}
export default App;
但是,它不会呈现新页面,而是停留在同一页面上,即登录页面。谁能帮帮我?
【问题讨论】:
-
isRedirect 从 false 变为 true 可能会有延迟。无论哪种方式,如果您仍然想要重定向,为什么要更改该状态值?
-
@AlexanderStaroselsky 我试过了,结果还是一样。无论如何,更新问题
标签: javascript reactjs axios react-router-dom