为什么使用Form的ref.current.setFiledsValue()时不了值了?

问题描述:在第一次打开modal时,通过用实例ref设置的值是不生效的

如图,点击修改打开弹窗前,数据,使用的设值方法都是正确的。但是打开的弹窗值为空。

在这里插入图片描述
在这里插入图片描述

原因如图,经过断点之后,发现ref的实例为undefined,因为第一次使用modal时,此时还没渲染dom节点到dom中,没有实例是很正常的。至于后来的,但是第二次打开之后,可以发现,此时已经正常使用。

在这里插入图片描述
下图是第二次点击。
在这里插入图片描述

第二次点击结果如下图,可以看到此时是正常的。

在这里插入图片描述

解决:第一次使用ref实例,因为还没有dom节点,使用ref当然获取不到实例,就像原生的dom,还未渲染,就想通过id,class等去获取,是没有任何值的。通过单向数据流的形式,Modal下面换成一个组件传值的形式。操作如下:

第一步换成组件

在这里插入图片描述

通过useEffect设置值,因为useEffect在第一次渲染之后执行,因此,此时是有ref实例的也就是formRef3

在这里插入图片描述

修改结果如图,第一次点击的时候的结果

在这里插入图片描述

总结:尊重react的渲染,和单向数据流

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值