Reactjs 如何以编程方式更新antd中的表单字段值

Reactjs 如何以编程方式更新antd中的表单字段值,reactjs,antd,Reactjs,Antd,我使用的是antd版本4.0.0-rc.3, 我有一个包含以下值的表单 { user: { address: { country: 'India', state: 'abc', zipcode: 123456 } } } 如何将zipcode值更新为98765? setFieldsValue仅更新根级别的字段 我在试着用 setFieldsValue({ ['user.address.zipcode']: 9

我使用的是antd版本4.0.0-rc.3, 我有一个包含以下值的表单

{
   user: {
     address: {
        country: 'India',
        state: 'abc',
        zipcode: 123456
     }
   }
}
如何将zipcode值更新为98765? setFieldsValue仅更新根级别的字段

我在试着用

setFieldsValue({
   ['user.address.zipcode']: 98765
})
此函数的结果是

{
   user: {
     address: {
        country: 'India',
        state: 'abc',
        zipcode: 123456
     }
   },
   user.address.zipcode:98765 
}
提前感谢您宝贵的回答

使用设置字段

const newData = {user: {...address, zipcode:98765 }}
setFields([{
   name: ['user', 'address', 'zipcode'],
   value: 98765,
}])
您可以使用:

或:


任何一个都将设置您以前状态的副本,仅更改zipcode。

据我所知,setFieldsValue专门用于更新字段值。如果您想使用setFieldsValue方法通过字段更新值,请使用类似zipcode的字段名,然后通过form validator方法获取值,如果我错了,提供一个提琴。这段代码可以工作,但我必须根据准确更改的字段setFieldsValue({user:{address:{country:'India',state:'abc',zipcode:98765}}}})做一些事情请稍作解释编辑原始答案,并对您的代码片段进行文本解释,以供未来读者阅读。此答案位于低质量帖子审阅队列中,因为您没有描述您的答案。这浪费了人们浏览答案的时间,因为他们必须对答案进行反向工程,以找出他们所做的事情以及它们与问题的关系。请编辑您的答案,并说明您的答案如何解决问题,以避免删除。
import update from 'immutability-helper';

setFields(update(fields, {
  user: {
    address: {
      zipcode: {$set: 98765}
    }
  }
}))
setFields({
  ...fields, // if there is only user inside the fields, that's not necessary
  user: {
    ...fields.user, // if there is only address inside the user, that's not necessary
    address: {
      ...fields.user.adress, // This will copy all the address attributes (country, state, zipcode)
      zipcode: 98765 // This will overwrite the zipcode
    }
  }
})