javascript - 提交表单时 react 状态为空

标签 javascript reactjs

我对 react 并不陌生,但出于某种奇怪的原因,我遇到了一个正在测试的快速示例,我注意到状态为空字符串。好像它没有更新。 我正在使用 React 18.1,这里是一个 stack blitz 实例来实时查看代码(沙箱),click me .

完整代码:

import React, { useState } from 'react';

export default function App() {
  const [qr, setQr] = useState('');

  const handleSubmit = (e) => {
    e.preventDefault();
    alert('The submitted QR code is: ', qr);
  };

  const handleChange = (e) => {
    setQr(e.target.value);
  };

  return (
    <form onSubmit={handleSubmit}>
      <input onChange={handleChange} value={qr} />
    </form>
  );
}

谁能解释一下为什么提交表单时状态没有准备好?你是如何解决这个问题的?

我实际上正在处理一个更大的项目,当我遇到这个错误时,我决定在沙盒中的一个更小的快速示例中演示它。

谢谢你👍

最佳答案

问题在您的警报中。该值实际上是在发生变化时更新的,但 alert 只接受一个参数,而您要传递两个参数。

相反,您可以像这样连接字符串以产生所需的结果:

alert(`The submitted QR code is: ${qr}`);

关于javascript - 提交表单时 react 状态为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74804581/

相关文章:

javascript - 将 Javascript 代码注入(inject)网页

javascript - 如何在午夜或基本上在 Javascript 的新一天更新当前日期

javascript - 如何根据键名合并2个数组并根据合并后的值进行排序?

javascript - 为什么 Vue DOM 变化这么慢?

javascript - 如何在 webpack 配置下拆分媒体查询?

javascript - 如何以编程方式清除/重置 React-Select?

javascript - HighCharts 饼图刷新中的传奇正在消失

javascript - 从 JavaScript OOP 中的经典事件管理转向事件委托(delegate)

javascript - 使用 Javascript 将类添加到动态行

reactjs - 即使表格由数据填充,Ant Design 表格仍继续显示加载