【发布时间】:2020-05-28 09:37:57
【问题描述】:
我有一个页面,其中带有标签复选框的文件是从地图呈现的。基本上用户可以选择/取消选择文件。 问题是我想添加可以通过单击按钮选择/取消选择所有文件的功能。 我试图为此使用 refs。
const fileRef = React.useRef([]);
然后我有简单的地图:
files.map((file, index) =>
<FormControlLabel
ref={el => fileRef.current[index] = el}
control={...}
label={file.name}
/>
)
我尝试创建这样的函数:
const selectAll = () => {
for(let i = 0; i < files.length; i++) {
fileRef.current[i].control.click();
}
}
问题是只有第一个文件被选中/取消选中。选定的文件保存在数组中。手动点击是用简单的handleChange处理的,我用event.target.value选择复选框,取消选择时我只使用array.filter。
例如,如果我用两个不同的索引制作两个按钮,那么它可以工作,但在循环内索引似乎没有生效。
有没有办法一键选择/取消选择所有文件?我认为取消选择很容易,我只是清除数组,但选择似乎是个问题。 Ref 仅适用于第一项。
【问题讨论】:
标签: reactjs react-hooks