Ant-design: Form setFieldsValue 方法参数是什么,我传入一个对象,在componentWillReceiveProps中执行死机了

创建于 2016-09-09  ·  16评论  ·  资料来源: ant-design/ant-design

  • antd 版本: 1.11.0
  • 操作系统及其版本:MAC 10.11.6 内存16G CPU i7
  • 浏览器及其版本: CHROME

点击一个编辑按钮,使用现有的数据填充表单。

在点击按钮的时候update state 为编辑状态,
在componentWillReceiveProps中调用setFieldsValue方法。大概1分钟左右以后表单填充完成,
然后我在点击任意Input,继续等待1分钟左右。

最有用的评论

这form是真难用,封装后使用成本太高

所有16条评论

setFieldsValue 本质是调用外层 wrapper 的 setState,间接调用 componentWillReceiveProps,所以死循环了。

请用 mapPropsToFields http://ant.design/components/form/#Form.create(options)

@benjycui 谢了

mapPropsToFields 把 props 转为对应的值,可用于把 Redux store 中的值读出
Function(props): Object{ fieldName: Object{ value } }
没看到 我要在mapPropsToFields怎么写

嗨,有没有办法翻译这个转换?

@bnlambert你的问题是什么

我想看看如何用setFieldsValue设置初始值。

我的日期选择器日历也出现了中文; 我该如何纠正它?

你可以试试moment.locale('en');

https://ant.design/components/date-picker/文档

我需要'antd'的时刻还是需要单独下载?
请更明确一点。 谢谢

在您的网站上,有“setFieldsValue”的注释

please don't use it in componentWillReceiveProps, otherwise, it will cause an endless loop, more)

它链接到这个页面,我认为它是一个解释。 如果可能的话,我们能得到某种翻译吗?

谢谢

@coljung试试谷歌翻译。

@bnlambert @coljung或者如果您使用的是 chrome,请右键单击 -> 翻译成英文

我可以理解一些问题是用中文写的,以便维护者之间的交流更方便/更快,但是这个在官方文档中被引用,它是“它的一部分”,所以它应该被翻译。
替代方案:这里写的信息应该包含在官方文档中。

@benjycui IMO“尝试谷歌翻译”不是建设性评论,违反了CODE_OF_CONDUCT.md中提到的一些行为规则

  • 使用热情和包容的语言
  • 尊重不同的观点和经历
  • 优雅地接受建设性的批评
  • 专注于对社区最有利的事情
  • 对其他社区成员表示同情

对于回复“:smile:”的 9 个人:你显然是双语的,谷歌翻译内容需要多长时间,如果需要,由于你的语言技能调整翻译并将内容粘贴到这里?

话虽如此:

  1. OP 描述了这个问题:在componentWillReceivedProps中调用setFieldsValue $ 会导致一个循环,该循环最终会在 1 分钟后停止。 每个字段更改都会导致一个新的“无限”循环。
  2. 维护者回答说setFieldsValue导致 HOC 中的this.setState ,因此它会更改道具并直接导致您的componentWillReceiveProps方法被调用。 这就是为什么有一个循环。 我们应该使用mapPropsToFields
  3. OP感谢维护者
  4. 另一个(未回答的)问题被问到。 mapPropsToFields用于从存储中读取数据,如何写入?

这form是真难用,封装后使用成本太高

mapPropsToFields 和 upload 冲突 上传会重置表单

此页面是否有帮助?
0 / 5 - 0 等级