试图清除我的 react-final-form 字段,但我得到了空对象值

问题描述

这是我的场景,我在初始页面加载时清除除 "retainThisObj" 之外的所有字段值。

我的问题是我得到了空的 { } 简而言之我的 "retainThisObj" 也被删除了。我期待这个 { retainThisObj }

这是我的代码

从'react-final-form'导入{ useForm }

  const finalFormAPI = useForm()
  const { retainThisObj,...restValues } = finalFormAPI.values

 // func to reset field values
  const reset = (obj) => {
    Object.keys(obj).length &&
      Object.keys(obj).forEach((value) => {
        finalFormAPI.change(obj[value],undefined)
      })
  }


  useEffect(() => {
    reset(restValues)   
  },[restValues])

According to @Erik R. / the author

您可以随时调用 form.change('fieldName',undefined) 您想清除该值。

我正在做的是添加一点逻辑以提高代码效率。 因为如果你有很多字段值,你最终会像这样。

form.change('fieldName1',undefined)
form.change('fieldName2',undefined)
form.change('fieldName3',undefined)
form.change('fieldName4',undefined)
and so on..

解决方法

我想我知道为什么了,我返回的是 obj[value] 而不是 value

更新代码

// func to reset field values
  const reset = (obj) => {
    Object.keys(obj).length &&
      Object.keys(obj).forEach((value) => {
        finalFormAPI.change(value,undefined) 
       // I need the value itself not obj[value] or { name: "value"}
      })
  }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...