У меня есть страница, где файлы с флажками для надписей отображаются с карты. Обычно пользователь затем может выбирать / отменять выбор файлов. Проблема в том, что я хотел добавить функцию, которая позволяет выбирать / отменять выбор всех файлов одним нажатием кнопки. Я пробовал использовать для этого ссылки.
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.
Если я, например, создаю две кнопки с двумя разными индексами, тогда он работает, но внутри l oop индекс, кажется, не действует.
Есть ли способ выбрать / отменить выбор всех файлов одним щелчком мыши? Я полагаю, что отменить выбор легко, я просто очищаю массив, но выбор кажется проблемой. Ref работает только с первым элементом.