【问题标题】:Cannot read properties of undefined (reading 'preventDefault')无法读取未定义的属性(读取“preventDefault”)
【发布时间】:2021-12-31 21:52:54
【问题描述】:

我需要你的帮助。我有一个我无法解决的问题。 我是新来的。 我正在尝试将信息发送到后端。结果,我收到一个错误:Cannot read properties of undefined (reading 'preventDefault')。 我想问一下,我的错误是什么,我正在执行 POST 请求是否正确?谢谢

import React, { useEffect, useState } from 'react';
import axios from 'axios';

export let Form_Post = () => {
  let [name, setName] = useState('');
  let [price, setPrice] = useState('');
  let [description, setDescription] = useState('');

  let submitName = (e) => {
    setName(e.target.value);
  };

  let submitPrice = (e) => {
    setPrice(e.target.value);
  };

  let submitDescription = (e) => {
    setDescription(e.target.value);
  };

  let sendLaptop = (event) => {
    axios.post('http://localhost:8081/laptop', {
      name: name,
      price: price,
      description: description,
    });
    event.preventDefault();
    setName('');
    setPrice('');
    setDescription('');
  };

  useEffect(() => {
    sendLaptop();
  }, []);

  return (
    <form onSubmit={sendLaptop}>
      <input type="text" value={name} onChange={submitName} />
      <input type="text" value={price} onChange={submitPrice} />
      <input type="text" value={description} onChange={submitDescription} />
      <button onSubmit={sendLaptop}>Send</button>
    </form>
  );
};

【问题讨论】:

    标签: reactjs post axios


    【解决方案1】:

    您在useEffect 钩子中以及在提交时调用sendLaptop。当您这样做时,没有附加事件,因此 event 未定义,因此 event.preventDefault 也未定义。

    【讨论】:

    • 在相关说明中,&lt;button&gt; 元素不会触发 submit 事件;)
    【解决方案2】:

    看起来问题与sendLaptop 内部的event.preventDefault() 有关,因为它是从两个地方(useEffectonClick 处理程序)调用的。

    在从useEffect 调用sendLaptop 的地方,没有传递event 变量。

    你应该检查事件是否通过,然后才调用它。

    let sendLaptop = (event) => {
      axios.post('http://localhost:8081/laptop', {
        name: name,
        price: price,
        description: description,
      });
      if (event) {
        event.preventDefault();
      }
      setName('');
      setPrice('');
      setDescription('');
    };
    

    【讨论】:

    • 非常感谢,它帮助了。我很抱歉问这个问题,因为我只是在学习。在数据库中,在此之前我已经有4个元素(对象),最后一个的id = 4。但是,在前端创建一个新对象后,它出现在数据库中,id = 33。请问,你怎么评论对此,如何解决这个问题?这是后端(Spring-boot)的问题还是已经需要在 React 中解决?谢谢)
    • 你能为此打开一个新问题吗?
    猜你喜欢
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2022-01-15
    • 2021-12-13
    • 2021-11-28
    • 2021-11-15
    相关资源
    最近更新 更多