使用清除按钮清除react.useState时遇到问题

发布于 2025-01-11 14:32:53 字数 1017 浏览 0 评论 0原文

我发现很难清除我设置为 setImportFile useState 的文件输入。这是我声明的 useState

const [importFile, setImportFile] = React.useState<File | null>();
const [fileError, setFileError] = React.useState<string>("");

我在这个 const 方法中清除了两个 useState 变量,但只有一个被清除,即 setFileError。

  const clearModal = () => {
        setImportFile(null);
        setFileError("");
    };

我在此方法中使用 setImportFile

 const onChangeImportFile = (e: React.ChangeEvent<HTMLInputElement>) => {
        e.preventDefault();
        setImportFile(e.currentTarget.files ? e.currentTarget.files[0] : null);
        setSaving(true);
    };

这是我的渲染,其中我使用清除按钮,只有错误会清除,但文件输入不会清除。我想清空模式中的所有内容

 <Form.Control
     type="file"
     accept='.csv, .xls, .xlsx'
     required
     className="primary mb-3"
     name=""
     onChange={onChangeImportFile}
/>
  <Button variant="secondary" onClick={clearModal} > Clear </Button>

I am finding it difficult to clear this file input that I am setting to setImportFile useState. This is the useState I declared

const [importFile, setImportFile] = React.useState<File | null>();
const [fileError, setFileError] = React.useState<string>("");

I clear two useState variables in this const method but only one gets cleared which is setFileError.

  const clearModal = () => {
        setImportFile(null);
        setFileError("");
    };

I use setImportFile in this method

 const onChangeImportFile = (e: React.ChangeEvent<HTMLInputElement>) => {
        e.preventDefault();
        setImportFile(e.currentTarget.files ? e.currentTarget.files[0] : null);
        setSaving(true);
    };

This is my render in which I use the clear button and only the error would clear out but the file input will not clear out. I want to empty everything in the modal

 <Form.Control
     type="file"
     accept='.csv, .xls, .xlsx'
     required
     className="primary mb-3"
     name=""
     onChange={onChangeImportFile}
/>
  <Button variant="secondary" onClick={clearModal} > Clear </Button>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

怪异←思 2025-01-18 14:32:53

我认为您需要将状态值传递给 Form.Control,以使其受到控制(否则它不会从状态获取其值)。

<Form.Control
  type="file"
  accept='.csv, .xls, .xlsx'
  required
  className="primary mb-3"
  name=""
  value={importFile}
  onChange={onChangeImportFile}
/>

I think you need to pass the state value to the Form.Control, to make it controlled (otherwise it's not getting its value from the state).

<Form.Control
  type="file"
  accept='.csv, .xls, .xlsx'
  required
  className="primary mb-3"
  name=""
  value={importFile}
  onChange={onChangeImportFile}
/>
好菇凉咱不稀罕他 2025-01-18 14:32:53

您不需要设置 File | null 因为 SetStateAction 将被设置为 未定义

试试这个:

const [importFile, setImportFile] = React.useState<File>();
setImportFile(undefined);

You don't need to set File | null as SetStateAction will be set to undefined.

Try this:

const [importFile, setImportFile] = React.useState<File>();
setImportFile(undefined);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文