【问题标题】:React nothing executed after post with axios使用 axios 发布后不执行任何反应
【发布时间】:2020-05-19 16:12:51
【问题描述】:

在执行 axios 帖子后,我无法获取任何内容。数据按预期发布到后端,但之后我无法运行任何东西。即使是发布后的 console.log 也不起作用。我已经尝试过基于 axios 的 promise 和 async await,但在通过 axios 发布后我什么也得不到。任何想法我做错了什么?

创建 React App 3.3.0

反应 16.11

反应路由器 5.1.2

import React, { Component } from 'react'
import { withRouter } from 'react-router'
import axios from 'axios'

...

class Contact extends Component {
      ...

    submitContactHandler = async event => {
        event.preventDefault()
        try {
            await axios.post('/mail/contact', {
                userName: this.state.formData.name.value,
                userEmail: this.state.formData.email.value,
                userMessage: this.state.formData.message.value
            })
            this.props.history.push('/about')
            console.log("This doesn't even run")
        } catch (error) {
            console.log(error)
        }
    }

    render() {
        ...
        return (
            ...
            <Form onSubmit = {(event) => this.submitContactHandler(event)}>
                ...
            </Form >
        ...
        )
      }
    }

export default withRouter(Contact)

【问题讨论】:

  • 已在axios.post() 中尝试过相对路径和绝对路径。 console.log()try 块中可以正常工作,如果在 axios.post() 之前而不是之后执行。
  • 那个try catch应该有错误。你见过一个吗? console.log("err:", error) 以获得更好的可见性
  • 这也是我所期望的,但事实并非如此。我在 try/catch 块上方记录console.log(this.props),并且执行得很好,尽管它仍然是浏览器控制台中显示的唯一内容。应用程序终端仅按预期显示成功日志。我被难住了。
  • 尝试控制台记录 this.props.history 如果它返回一些东西
  • {length: 8, action: "POP", location: {…}, createHref: ƒ, push: ƒ, …} length: 8 action: "POP" location: {pathname: "/contact", search: "", hash: "", state: undefined} createHref: ƒ createHref(location) push: ƒ push(path, state) replace: ƒ replace(path, state) go: ƒ go(n) goBack: ƒ goBack() goForward: ƒ goForward() block: ƒ block(prompt) listen: ƒ listen(listener) __proto__: Object

标签: javascript reactjs react-router axios


【解决方案1】:

处理来自后端的响应

   await axios.post('/mail/contact', {
       userName: this.state.formData.name.value,
       userEmail: this.state.formData.email.value,
      userMessage: this.state.formData.message.value
    })
    .then((response) => {
      this.props.history.push('/about')
    }, (error) => {
      console.log(error);
    });

【讨论】:

  • 我不知道为什么,但是 res.json 在后端针对这个特定的帖子请求被注释掉了。 /叹。您已指导我进行修复,谢谢。
猜你喜欢
  • 2018-10-27
  • 2020-08-19
  • 1970-01-01
  • 2010-12-06
  • 2021-10-07
  • 2020-03-22
  • 1970-01-01
  • 1970-01-01
  • 2017-12-11
相关资源
最近更新 更多