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

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

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

13 ответов

19 просмотров

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

Объект в состоянии типа 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
К тому что, он должны быть сделано уже до того как...

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта