首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TypeError: nameList.map不是使用antd validateFields()和getFieldValue get value null的函数

TypeError: nameList.map不是使用antd validateFields()和getFieldValue get value null的函数
EN

Stack Overflow用户
提问于 2020-10-17 12:42:10
回答 2查看 1.2K关注 0票数 0

在我添加validateFields()和规则之前,一切都运行得很好,现在我收到了一个错误TypeError: nameList.map is not a function,我也在尝试使用async/awit,我不确定为什么会发生这种情况,之前的代码在没有validateFields()的情况下工作得很好,另一方面我使用getFieldValue('categoryName')来获取输入值,它在开始的时候工作得很好,然后值是空的。在我做了调查之后,我找不到任何线索。请谁来帮帮我。

代码语言:javascript
运行
复制
  updateCategory = () => {
    //hide confirm box
    this.formRef.current.formRef.current.validateFields(async (err, values) => {
      if (!err) {
        this.setState({
          showStatus: 0,
        });
        const categoryId = this.category._id;
        const categoryName = this.formRef.current.formRef.current.getFieldValue(
          'categoryName',
        );
        //Reset fields to initialValues
        this.formRef.current.formRef.current.resetFields();
        //request to update category
        const result = await reqUpdateCategory({ categoryId, categoryName });
        if (result.status === 0) {
          //reload display list
          this.getCategorys();
        }
      }
    });
  };
EN

回答 2

Stack Overflow用户

发布于 2021-01-04 03:03:50

只是碰巧遇到了这一点,所以这主要是为后面的任何人准备的,但是validateFields不接受函数作为参数。validatFields的签名是function (nameList, options)。名称列表是要验证的字段的列表。

如果不提供参数,它将使用表单本身中的字段。我相信您在这里要做的是.validateFields().then(async(err, values)=> { ... },如下所示:

代码语言:javascript
运行
复制
updateCategory = () => {
    //hide confirm box
    this.formRef.current.formRef.current.validateFields().then(async (err, values) => {
      if (!err) {
        this.setState({
          showStatus: 0,
        });
        const categoryId = this.category._id;
        const categoryName = this.formRef.current.formRef.current.getFieldValue(
          'categoryName',
        );
        //Reset fields to initialValues
        this.formRef.current.formRef.current.resetFields();
        //request to update category
        const result = await reqUpdateCategory({ categoryId, categoryName });
        if (result.status === 0) {
          //reload display list
          this.getCategorys();
        }
      }
    });
  };
票数 1
EN

Stack Overflow用户

发布于 2021-10-12 04:04:06

请注意,从antd3->antd4迁移,validateFields不再支持回调,您应该使用以下代码:

代码语言:javascript
运行
复制
validateFields().then(callback)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64399070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档