【问题标题】:setState and Axios POST request not workingsetState 和 Axios POST 请求不起作用
【发布时间】:2021-08-01 14:36:46
【问题描述】:

我有 Node JS 和 Express API,它接受电子邮件作为 URI 参数: http://localhost:5000/otp/get-passc/:email

例如: http://localhost:5000/otp/get-passc/${this.state.passAccount.email.toString()} 在 submitRequest 方法中。

我的前端在 React 中:

这是我的 React 代码:

class FormClass extends React.Component{
    constructor(props){
        super(props);
        this.state = {
            passAccount: {
                email: "Email",
                password: "Password"
            },
            errorMessage: ''
        };
    }


    submitRequest = (event) =>{
        this.state.passAccount.email === 'Email' ? this.setState({errorMessage:'Please enter a valid email'}) : axios.post(`http://localhost:5000/otp/get-passc/${this.state.passAccount.email.toString()}`);
        console.log(this.state.passAccount.email);
        event.preventDefault();
    }

    handleChange = (event) =>{
        console.log(`input detected`);
        let request = this.state.passAccount;
        request[event.target.name]  = event.target.value;
        this.setState({passAccount: request});

     }


    handleSubmit = (event) =>{
        event.preventDefault();

    }




    render(){
        return(
            <Form onSubmit={() => this.handleSubmit}>
                <Form.Group>
                    <Form.Label>Email Address</Form.Label>
                    <Form.Control type="text" value={this.state.email} onChange={this.handleChange} />
                </Form.Group>
                <Form.Group>
                    <Form.Label>Password</Form.Label>
                    <Form.Control type="text" value={this.state.passcode} onChange={this.handleChange}/>
                </Form.Group>

               
                <Button type="submit" onClick={() => this.submitRequest}>Get OTP</Button>
                
            </Form>

        );

    }

}



export default FormClass;

我的问题:

  1. 当我单击“获取 OTP”按钮时,我想使用 Axios 向在电子邮件字段中输入的电子邮件发送 POST 请求。 但是它不起作用。

  2. setState 不能使用 email 字段的 handleChange 函数,有什么问题?

【问题讨论】:

  • 你需要onClick={(event_) =&gt; this.submitRequest(event_)}或者干脆onClick={this.submitRequest},和onSubmit一样

标签: javascript node.js reactjs axios


【解决方案1】:
  1. 你不叫submitRequest,只是更新:

    onClick={() => this.submitRequest()}

  2. 你更新状态的方式错误。

    this.setState({passAccount: {...this.state.passAccount, event.target.name: event.target.value}});

【讨论】:

    猜你喜欢
    • 2021-10-06
    • 2018-12-25
    • 2022-01-23
    • 2021-08-11
    • 2018-07-28
    • 2019-09-28
    • 2018-05-20
    • 1970-01-01
    相关资源
    最近更新 更多