React 钩子形式 setValue null 不起作用

React hook form setValue null not working

提问人:coderman123 提问时间:6/22/2023 最后编辑:coderman123 更新时间:6/22/2023 访问量:642

问:

我正在尝试使用react hook form setValue将等于空字符串的每个值设置为null,但它不起作用。

有什么修复方法吗?

const onSubmit = data => {
    for (const [key, value] of Object.entries(data)) {

      if (value === '') {
        setValue(key, null)
      }
    }
(Method here for sending data to api)
    reset();
  }
}

编辑:

我为我的问题找到了这个解决方法:

const onSubmit = data => {
    let newData = data;

    Object.keys(newData).forEach((field) => {
      if (newData[field] === '') {
        newData[field] = null
      }
    })
    /Method for api here
    reset();
  }
javascript reactjs react-hook-form setvalue

评论

0赞 Paul-Marie 6/22/2023
你能给我们看一下代码吗?
0赞 coderman123 6/22/2023
您好,我使用提交时运行的代码编辑了我的原始帖子。
0赞 Charles Semaan 6/22/2023
在 setValue 方法之前添加一个 console.log,看看它是否先打印出来
0赞 coderman123 6/22/2023
它打印出所有值 = '' 的键,但在将数据提交到 api 之前似乎没有注册更改
0赞 Alserda 6/22/2023
onSubmit是如何调用的?什么叫它?难道“数据”不是你所期望的吗?

答:

0赞 Paul-Marie 6/22/2023 #1

假设是你的一个钩子,你是这样创建的:setValue

const [value, setValue] = useState();

那么你不能使用多个,我的意思是,如果你使用:setValue

setValue("toto");
setValue("tata");
setValue("titi");

在一个函数中,则只会更改一次,更改为最后一个值(此处为“titi”)。value

因此,您需要将类型更改为数组/对象,并且仅对修改后的对象执行 1,例如:valuesetValue

const array = Object.entries(data).map(([key, value]) => value === '' ? null : value);
setValue(array);

评论

0赞 coderman123 6/23/2023
嘿,setValue 是 React Hook Form 中用于更新 formState 的函数。我让它工作了,但无论如何都要感谢:)
0赞 Paul-Marie 6/26/2023
@coderman123是的,我知道这是一个基本函数,你知道如何使用它,我认为你错过了我帖子的要点,因为它不是关于“如何使用 setValue”的教程,而是对“不要在循环中使用 setValue,因为只会设置最后一个值,您可以在 useState 或函数中执行 1000 setValue(), 但只会执行最后一个