【问题标题】:ReactJS form submit this.props.history.push('/downloads') not linking through to the new pageReactJS 表单提交 this.props.history.push('/downloads') 未链接到新页面
【发布时间】:2021-01-03 04:47:53
【问题描述】:

一旦用户在下面的函数中使用 this.props.history.push 填写了表单,我就会尝试推送到新页面。

  handleSubmit = async event => {
    event.preventDefault()
    try {
      const res = await newEnquiry(this.state.formData)
      this.props.history.push('/downloads')
      console.log(res)
    } catch (err) {
      console.log(err.response.data)
    }
  }

ReactJS 表单在 /contacts 页面上工作正常,并将信息提交到我的 Django 后端,所以我知道它工作正常,但是我无法让重定向工作,它给了我这个错误消息。

<form onSubmit={this.handleSubmit}> 在我的表单标签内,并且工作正常,所以我很确定我的表单没有问题。

Api.js

const baseUrl = '/api'

export const newEnquiry = formData => {
  return axios.post(`${baseUrl}/enquiries/`, formData)
}

Views.py

class EnquiryListView(APIView):

    def get(self, _request):
        enquiries = Enquiries.objects.all() 
        serialized_enquiries = EnquirySerializer(enquiries, many=True)
        return Response(serialized_enquiries.data, status=status.HTTP_200_OK)

    def post(self, request):
        created_enquiry = EnquirySerializer(data=request.data)
        if created_enquiry.is_valid():
          created_enquiry.save()
          return Response(created_enquiry.data, status=status.HTTP_201_CREATED)
        return Response(created_enquiry.errors)

序列化器.py

class EnquirySerializer(serializers.ModelSerializer):

      class Meta:
        model = Enquiries
        fields = '__all__'

【问题讨论】:

    标签: reactjs django forms push history


    【解决方案1】:

    在您遇到此问题的情况下,当错误触发时,它无法读取 err.response.data 属性。如果没有错误,它将重定向您。在您的 Django 应用程序中,检查 error handler 应该返回的内容。

    try/catch 的快速回顾。

    try {
     // if everything passes, run this block
    } catch (err) {
     // if something goes wrong, run this block
    }
    

    在这种情况下,请务必检查您的完整错误是什么。可能是404 或完全出乎意料的东西。

    【讨论】:

    • 谢谢纳米。我可以在 Django 应用程序中看到提交的数据,因此它已成功放置该信息。即使发生这种情况,它也不会重定向。
    • 你能粘贴这条特定路线的 Django 应用程序的代码吗?肯定出了问题,因为 JavaScript 不会无缘无故地给出错误。 .
    • 谢谢,我已将我的代码添加到页面顶部的主代码中。这是你需要的吗?
    • 当你在 React 中遇到错误时。您在控制台中遇到什么错误?将err.response.data 替换为err,这样我们就可以看到全貌。如果.data 不可用,可能是 404 或类似的。
    • TypeError: 无法读取 Form.handleSubmit (Form.js:30) 处未定义的属性“推送”
    猜你喜欢
    • 2019-01-17
    • 2021-04-22
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    相关资源
    最近更新 更多