gpt4 book ai didi

javascript - 在 React 中提交后重定向

转载 作者:行者123 更新时间:2023-11-30 07:50:58 24 4
gpt4 key购买 nike

我试图在我的 React 应用程序中按下提交按钮后重定向用户,但重定向从未发生。提交按钮后,我通过 axios 将数据发送到 API,然后我想重定向。这是通过首先在我的构造函数中将重定向的状态设置为 false 来完成的,在发送 axios 调用之后我试图将它的状态设置为 true 然后如果值为 true 则有条件地呈现一个 react 路由器重定向。

我已经确认axios确实向后端发送了数据。但是不知道为什么在值设置为 true 后条件渲染不运行。有任何想法吗? :)

我的代码:

import React from 'react';
import Button from '@material-ui/core/Button';
import CssBaseline from '@material-ui/core/CssBaseline';
import axios from 'axios';
import { Redirect } from 'react-router';

class confirmWithdraw extends React.Component {
constructor() {
super();
this.state = {
redirect: false
};

this.handleSubmit = this.handleSubmit.bind(this);
}

handleEvent = e => {
this.setState({ [e.target.name]: e.target.value });
};

handleSubmit = e => {
e.preventDefault();
const amount = sessionStorage.getItem('amount');
const serverCardNumber = sessionStorage.getItem('cardnumber');
axios({
method: 'post',
url: '/api/whidrawal',
data: {
amount,
serverCardNumber
}
}).then(() => this.setState({ redirect: true }));
};

render() {
const { redirect } = this.state;
if (redirect) {
return <Redirect to="/moneyform" />;
}
return (
<React.Fragment>
{redirect ? <Redirect to="/moneyform" /> : null}
<div>
Select action -> Withdraw -> <b>Confirm -></b> Take cash -> Finished? -> Take card{' '}
</div>
<div>{sessionStorage.getItem('amount')}</div>
<h1>Please confirm the withdraw of {sessionStorage.getItem('amount')} NOK </h1>
<CssBaseline /> {/*https://material-ui.com/style/css-baseline */}
<form onSubmit={this.handleSubmit}>
<br />
{/* Bytt ut med CSS block elementer eller noe slikt, bytt name på form fields til å hentes via JS */}
<div className="container">
<Button type="submit" variant="contained" color="primary" className="floatRight">
Confirm
</Button>
<Button type="submit" variant="contained" color="secondary" className="floatLeft">
Cancel
</Button>
</div>
</form>
</React.Fragment>
);
}
}
export default confirmWithdraw;

最佳答案

假设您使用的是 react-router v4,您将希望使用 history 对象进行导航。

import { withRouter } from 'react-router';
...

handleSubmit = () => {
...
this.props.history.push('/moneyform');
}

render() {
return (
<ReactFragment>
<div>
...
</ReactFragment>
)
}


export default withRouter(confirmWithdraw);

关于javascript - 在 React 中提交后重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53170754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com