React实践报错:TypeError: Cannot read property ‘setFieldsValue‘ of null

在React应用中,当使用Ant Design的表单时,遇到点击按钮弹出表单并回显用户信息时,由于表单组件尚未加载导致`setFieldsValue`报错。解决方案包括设置延迟执行或者将表单组件化。通过100毫秒的延迟可以确保表单加载完毕再设置值,或者通过组件化避免该问题。
摘要由CSDN通过智能技术生成

配置

react 17.0.1
antd 4.15.0

想实现的效果

用户点击”修改个人信息“按钮时,出现表单弹窗,弹窗中默认显示当前用户信息,需要表单回显(设置值)。

报错信息

TypeError: Cannot read property ‘setFieldsValue’ of null
报错信息

报错代码

showModal = () => {
    const { userInfo} = this.state
    this.setState({
      visibleInfo: true,
    });
    this.infoFormRef.current.setFieldsValue(userInfo);
  };

报错原因

对话框模块还没显示,也就是表单还没挂载就调用了setFieldsValue,所以报错

解决办法

方法一:设置一个100毫秒的延迟(已实践)

问题解决后代码

showModal = () => {
    const { userInfo} = this.state
    this.setState({
      visibleInfo: true,
    });
    // 设置100毫秒的延迟 确保from组件已经加载完毕
    setTimeout(() => {
      this.infoFormRef.current.setFieldsValue(userInfo);
    }, 100);
  };
方法二:将from表单组件化(未实践)

参考连接中大神已实践。

参考

感谢大神分析

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值