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

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

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

13 ответов

8 просмотров

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

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

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

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

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

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
12
У тебя в конфиге нигде нет deny all; или вообще любого deny?
Alexander Sherbakov
10
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Ребят, чет я уже не догоняю... Крч в коде на асм там происходит нечто вроде a+число (a+1, a+2 и т.д.). Но почему строка lea ecx, [edx+1] работает как a+1?? В edx берется адрес...
Alan 🔝 Бэброу
4
думаешь я не смогу также сделать? мне это просто не удобно
int 💳 𝙖𝙞𝙧 𝙗𝙞𝙜 𝙗𝙤𝙗 🔫 check bio / spam block / AFK / nohello.com / GMT+3
9
Карта сайта