我有一个Paypal组件,可以在成功付款时执行逻辑。
目标是首先执行paypal/axios.post
,然后执行this.setState(...)
。
以下代码块在setState()
逻辑之前执行Paypal
,并且从未付款:
render() {
const onSuccess = payment => {
axios
.post(
"http://compute.amazonaws.com:3000/ethhash",
{userInput: this.props.userInput}
)
.then(response => console.log(response.data, payment))
.catch(function(error) {
console.log(error);
});
};
this.setState({ redirect: true });
if (this.state.redirect) {
return <Redirect to="/FinishedPaying" userInput={this.state.userInput} />;
}}
如果我将setState()
嵌套在onSuccess
或axios.post
逻辑中,则会破坏我的(express
)服务器。奇怪的是,我的服务器给我的错误是某个功能不是一个功能……命名的功能在所有其他条件下都可以工作。
我非常感谢您能为我提供帮助,欢呼:)
答案 0 :(得分:0)
首先,您不应该在render函数中使用setState,而必须将其移动到React的其他生命周期,或者需要基于某些用户操作来调用发布请求。
onPayment= async ()=>{
const res=await axios.post("http://compute.amazonaws.com:3000/ethhash",
{userInput: this.props.userInput}
)
// check here if any error if error don't set the setState.
this.setState({redirect:true})
}