javascript - 动态组件内元素上的 createRef 为空
问题描述
我正在使用 antd(https://ant.design/components/form/)。我有一个Form
inside aModal
和 in 构造函数为表单创建了一个ref
。
当我打开模式时,我试图按照以下示例重置字段:https ://codesandbox.io/s/ddtxj 。当我单击打开模式的按钮时,我调用 onReset,如示例所示。
但我明白了Uncaught TypeError: Cannot read property 'resetFields' of null
。
当console.log(this.addCustomerFormRef);
我看到{current: null}
我认为 ref 是 null 因为模态/表单在 DOM 中还不存在......或类似的东西。当我setTimeout
对我的onReset()
方法进行操作时,它会起作用。
有人可以告诉我在表单中重置字段的正确方法吗?
构造函数:
this.addCustomerFormRef = React.createRef();
打开模态的按钮:
<Button type="primary"
onClick={() => { this.handleFormFieldsReset(); this.setState({ addModalVisible: true }) }}>
Add Customer
</Button>
重置表格方法:
handleFormFieldsReset = () => {
setTimeout(() => {
this.addCustomerFormRef.current.resetFields(); //works with setTimeout
}, 2000);
}
解决方案
推荐阅读
- firefox - 内容安全策略 - 确定被阻止资源的来源
- database-design - 如何设计具有单独班级的班级(课程)时间表系统
- javascript - 同时播放多个波
- pandas - 如何在 1 行 x 11 列中打印特定列的值?
- spring-kafka - 使用 EmbeddedKafka 进行单元测试
- c# - c#动态类型正确用法
- powershell - 在 Powershell 中使用 Range 运算符生成按字母顺序命名的文本文件
- apache-kafka - 迁移到 Kafka Streams 2.6 后,KafkaStreams 2.3 应用程序不会变得稳定
- python - 使用 Tensordot 复制矩阵-矩阵乘法
- java - 使用其他类的泛型进行泛型输入