169 похожих чатов

Приветствую. Подскажите, пожалуйста, как делать управляемыми чекбоксы в множественном случае?

Допустим, если один, или два чекбокса, можно создать для них useState и контролировать значения. Но когда их может быть больше 10, что используете?

13 ответов

17 просмотров

похоже на форму, а для формы лучше использовать библиотеки для управлением формами

Объект в состоянии типа const [checkedList, setCheckedList] = useState({ 1: true, 2: true, 3: false, ... }) так поиск по объекту O(n) === 1, если же массив использовать, то O(n) === n будет, хотя тут может и не важно если мало чекбоксов. Но я по привычке всегда в приоритете объекты, а массивы только в случаях когда важна последовательность элементов.

Raman
Смотря как и что искать

Ну массив то мы по объекту всегда можем получить через Object.keys Да и const todoIdList = [1,2,3,4]; const todoData = { 1: {title:"title1"}, 2: {title: "title2"}, 3: {title: "title2"} } удобнее чем const [ {title:"title1", id: 1}, {title:"title1", id: 2}, {title:"title1", id: 3}, ]

Тем что это каждый раз(не нужный) условный обход по массиву, это ведь не магия всё

Raman
Тем что это каждый раз(не нужный) условный обход п...

Эмм... Какой такой обход по массиву? Нет никакого массива. есть объект с данными. если важно положение элементов то делаеться второй массив с индексами типа const todoListId = [1,2,3,4]; если объект. как для задачи с checkedBox не надо по индексам обходить, то зачем вообще массив? Он же другие данные для отрисовки checkedBox использует, а это просто для хранения "отмечено или нет"

Sarevok
Эмм... Какой такой обход по массиву? Нет никаког...

Как это const todoIdList = [1,2,3,4]; const todoData = { 1: {title:"title1"}, 2: {title: "title2"}, 3: {title: "title2"} } Будет рендерится ?

todoIdList.map (todoId=><div key={todoId}>{todoData[todoid].title} </div>)

Sarevok
todoIdList.map (todoId=><div key={todoId}>{todoDat...

То есть вам надо держать 2 структуры up to date правильно? Если генерить из одной другую то это будет обход все равно. И тут мы имеет O(n) - проход и O(1) для получения данных из поля объекта, но нам не надо думать про как держать 2 структуры up to date независимо, ведь если мы будем ее генерировать то это уже ещё один обход

Ну и не буду :) Это всё разбивается об или держать структуру в ручную up to date, что нереально может быть или генерировать todoIdList но тогда это доп затраты.

Raman
Ну и не буду :) Это всё разбивается об или держат...

Я не пойму, зачем ты все время про генерацию todoIdList говоришь? Я про то что, если важен порядок вывода, то сразу делается вторая структура в виде массива А если нам не надо выводить объект, а только получать из него вложенные объекты по их ИД, то объект гораздо выгоднее. Очевидно, что если нам нужны обе эти операции, то две описанные мной структуры, гараздо выгоднее, чем одна общая.

Sarevok
Я не пойму, зачем ты все время про генерацию todoI...

К тому что, он должны быть сделано уже до того как мы проходимся, а это надо сделать или руками(что не очень) или сгенирировать(а это уже ещё проход)

Raman
К тому что, он должны быть сделано уже до того как...

Ну ок. Я не скажу. что до конца понимаю твоего беспокойства, но пусть будет по твоему. Лично я такой подход довольно часто пользую и какого-то усложнения кода не заметил. Но возможно это не так. Все может быть.

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
7
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
7
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Карта сайта