当前位置: 首页 > 知识库问答 >
问题:

反应Axios输入未定义

袁良弼
2023-03-14

我必须发布{输入}数据以http://localhost:4000/predictionAxios。但是{输入}变为未定义。

我使用const而不是类Main扩展组件. onChange,它设置表单数据。

const Main = ({ value, suggestions, auth: { user } }) => {

  const [formData, setFormData] = useState("");

  const [messages, setMessages] = useState([]);

  const { input } = formData;

  const onChange = e => setFormData(e.target.value);

  const onSubmit = event => {
    event.preventDefault();
    setMessages(prevMsgs => [...prevMsgs, formData]);

    console.log({ input });

阿希奥斯邮报。

    axios
      .post(
        `http://localhost:4000/prediction`,
        { input },
        { crossdomain: true }
      )
      .then(res => {
        console.log(res.data);
        //setMessages(prevMsgs => [...prevMsgs, formData]);
      })
      .catch(error => {
        console.log(error.message);
      });
  };

返回(表单)时带有onSubmit、onChange。

  return (
    <div className="true">
      <br />
      <form noValidate onSubmit={e => onSubmit(e)}>
        <div className="input-group mb-3">
           <input
                name="input"
                type="text"
                className="form-control"
                placeholder="Type text"
                onChange={e => onChange(e)}
              />
            )}
          <div className="input-group-append">
            <button className="btn btn-outline-secondary">Send</button>
          </div>
        </div>
      </form>
    </div>
  );
};

共有1个答案

艾骏
2023-03-14

正如我在评论部分所提到的那样,formData是一个字符串,我看到它没有一个名为input的属性,您试图对其进行解构,这就是为什么它总是定义的原因。

如果您确实需要axios的这种格式,那么您可以尝试使用useState更改formData的结构,如下所示:

const [formData, setFormData] = useState({input: null});

那么也许你可以尝试更新为:

const onChange = e => setFormData({input: e.target.value});

我希望这有帮助!

 类似资料:
  • 我试图通过反应路由器将道具从一个组件传递到另一个组件。当我试图从子组件获取道具时,我得到了这样一条消息。这是我的代码: Tracks.jsx: app.jsx: Album.jsx:

  • 问题内容: React 在promise中没有定义。这是我的代码: 这是错误代码: 问题答案: 可能没有约束力。 如果您可以使用ES6语法,请尝试用箭头函数替换。它会自动绑定: 或手动绑定:

  • 问题内容: 这是我第一次使用axios,遇到错误。 使用正确的url和参数,当我检查网络请求时,确实可以从服务器中获得正确的答案,但是当我打开控制台时,我看到它没有调用回调,而是捕获了错误。 错误:网络错误堆栈跟踪:createError @ http:// localhost:3000 / static / js / bundle.js:2188:15 handleError @ http://

  • 我有一个Vue SPA,我使用Axios处理请求,Vue Axios应用它,vuex存储令牌。但当我发送一个请求时,头授权将变成Bearer未定义或Bearer null。 流程是,通过登录,我检索一个令牌,将其保存到会话存储中,分派一个登录操作,我的vuex存储将从会话存储中设置一个处于状态的令牌。在我登录并将路由器重定向到“/”后,我想向/foo发送GET请求以及我的令牌。但这里我的代币没有定

  • 问题内容: 我正在运行AnchorCMS,而我刚刚升级到0.8版。尝试运行安装程序时,出现“未指定输入文件”错误。我相信这很可能是.htaccess问题,但是我不确定应该使用什么正确的设置。 我的网站可以在这里找到。 我的.htaccess设置为: 如果有帮助,我还将GoDaddy用作托管服务提供商。 问题答案: 未 指定输入文件 是由于服务器上PHP的实现而向您显示的消息,在这种情况下,这表示C

  • 这是Ubuntu 16.04中的nginx配置文件。4 LTS: 当访问网站我得到:没有输入文件指定。 存在/var/run/php/site.com.sock: 这是 /var/log/nginx/error.log *7在stderr中发送的FastCGI:“无法打开主脚本:/var/www/html/public/index.php(没有这样的文件或目录)”,同时从上游读取响应头,客户端:x