【发布时间】:2021-11-21 00:11:29
【问题描述】:
我有一个包含四个文件输入的表单。不同用途的文件的不同输入。
我为每个文件创建了一个引用。
我创建了一个引用数组。
提交时,我试图访问所有参考并获取它们的 ref.current.files[0]。
下面的示例代码:
import {useRef} from 'react';
export default function myComponent(props){
const file1 = useRef(null);
const file2 = useRef(null);
const file3 = useRef(null);
const file4 = useRef(null);
const fileRefs = [file1, file2, file3, file4];
function onSubmit(){
let files = [];
fileRefs.map((ref) => {
let obj = {};
obj.fileName = ref.current.files[0].name;
obj.file = ref.current.files[0];
files.push(obj)
})
}
render(
<div className="form">
<label>File 1 </label>
<input type="file" ref={file1} />
<label>File 2 </label>
<input type="file" ref={file2} />
<label>File 3 </label>
<input type="file" ref={file3} />
<label>File 4 </label>
<input type="file" ref={file4} />
<button onClick={() => onSubmit()}>Submit</button>
</div>
)
}
错误:“TypeError:无法读取 null 的属性(正在读取'文件')”
所以,我无法以这种方式访问 ref 的 .current 属性。
我真的不知道如何解决这个问题,只是想拼凑一些东西。
如果有人可以帮助我动态访问 ref 的当前属性,那就太好了。
【问题讨论】:
-
您在哪里实际上 设置任何参考
current值?什么叫onSubmit?您可以在问题中包含所有相关代码吗? stackoverflow.com/help/minimal-reproducible-example -
我编辑了我的代码以包含它们。我在调用函数或分配 ref 时没有问题,因此为简洁起见,我将其省略了。我很抱歉。
-
更新了@DrewReese
-
为什么要在函数组件中使用渲染?
-
您是否为每个输入选择一个文件? IE。四个文件输入,四个选定文件?
标签: javascript reactjs react-hooks use-ref