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

Всем привет!Подскажите, как лучше сделать динамический рендеринг однотипных компонентов(контроллов) по

условию.
Например, есть у меня вышестоящий компонент. Если он имеет значение "A", то нужно отрендерить один набор компонентов, Если значение "B", то другой набор.Эти наборы я описываю в объекте, а потом при переборе в разметке описываю условия, какие именно компоненты рендерить.
Насколько этот метод хорош по вашему мнению? Какие есть практики, структуры данных, как это можно сделать нагляднее?

63 ответов

118 просмотров

напиши отдельный функциональный компонент в котором с помощью switch case возвращай нужный элемент

Pavel- Автор вопроса
Nusret Cavalkada
напиши отдельный функциональный компонент в которо...

В имеете ввиду внутри map определить один функциональный компонент, который внутри будет за счет конструкции switch case возвращать нужный компонент?

да, у тебя .map будет возвращать Компонент

Pavel- Автор вопроса

компонентов очень много, в том и дело.

Pavel
компонентов очень много, в том и дело.

тогда обратил бы внимание на различие этих компонентов между собой

Pavel- Автор вопроса
Nusret Cavalkada
да, у тебя .map будет возвращать Компонент

Да, идея понятна. Но принципиальной разницы делать это с помощью if else или swtich case - внутри отдельного компонента или все вместе, нет. С точки зрения наглядности да, согласен!

Pavel
Да, идея понятна. Но принципиальной разницы делать...

кек) у тебя реакт при каждом ререндере будет мемоизировать вычисляемое значение того, что рендерить, так что разница есть и в том как оно будет работать и в том насколько аккуратно будет выглядеть JSX

Pavel
что вы имеете в виду?

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

Makcim Mikulich
если их отличие будет в том что от типа компонента...

условный оператор здесь будет выглядеть как говно, если вариантов > 2х

Очень много лишних конструкций и спор выше не о чем. Можно динамически задавать Element и давать ему от TS дженерика пропсы, лучшее решение проблемы.

.
Очень много лишних конструкций и спор выше не о че...

код написан на JS -> "да надо просто взять другой язык"

.
И что в сущности ты сказал?

надо найти в JS дженерики, потому что TS'а нет

TS — это основа, к тому же в такой ситуации помогает не выстрелить себе в ногу. Можно взять от React типы и передать элементы в пропсы, очень удобно во всех отношениях. Ну не хочешь нормального совета — не слушай и проигнорируй.

.
чего?

выбор языка на проекте это не то на что может повлиять джун)

.
Странно, что кто-то пишет без TS'а

о удивительным мир.... а тебе не странно почему вообще используется JS на фронте а не Java?

Pavel- Автор вопроса

Не очень понимаю. TS это про типизацию, а мы про манипулирование данными говорим. Если можно, краткий пример?

Pavel
Не очень понимаю. TS это про типизацию, а мы про м...

Парень, вот тебе обязательно нужен объект для этой задачи? Или ты таким образом передать все данные хочешь?

Pavel- Автор вопроса
.
Парень, вот тебе обязательно нужен объект для этой...

Мне нужно определить какие данные нужно отрисовать по условию. Не обязательно объект. Но как еще можно можно сделать не представляю.

Pavel
Мне нужно определить какие данные нужно отрисовать...

если у тебя много условий, а не просто по типу switch, То делай if с ранним return.

Pavel
Мне нужно определить какие данные нужно отрисовать...

Вот! А почему бы тебе не рендерить html по тому, что тебе приходить в пропсы?

Pavel- Автор вопроса
.
Вот! А почему бы тебе не рендерить html по тому, ч...

Я мог бы заготовить каждый template под каждое условие. Просто условий слишком много. И это такой громоздкий вариант. И такое количество кода скажется на объеме итогового бандла.

Pavel- Автор вопроса
.
Ты с ТС минимально знаком?

Знаком. Но причем тут ТС, который работает поверх JS только в редакторе кода. Какую роль он сыграет в данных?

Pavel
Знаком. Но причем тут ТС, который работает поверх ...

никакой не сыграет, просто поможет ошибок избежать

Pavel- Автор вопроса
Vyacheslav Гайсин
лучше заготовить отдельно

Чем лучше? JSX, что так, что эдак скомпилируется.

Pavel- Автор вопроса

разделишь разные варианты реализации на отдельный компонент. Будет точно меньше путаницы.

Pavel- Автор вопроса
Vyacheslav Гайсин
разделишь разные варианты реализации на отдельный ...

Да путаницы собственно никакой и нет. Есть объект, который описывает структуру рендеринга. Нужно лишь пройтись по нему и отрисовать то, что нужно.

Pavel
Знаком. Но причем тут ТС, который работает поверх ...

Смотри, ты можешь рендерить семантику от пропса, который будет твоим корневым элементом, тебе не нужны будут условия и тот объект, который ты написал. по React.ComponentProps<"input")> ты берешь сразу все типы своего элемента из пропса, спредишь его в свой html тег {...props} и когда ты его используешь где-то на странице — ты от типов, которые ты взял можешь дать ему уже выше placeholder, value, onChange и так далее. Ты сейчас изобретаешь велосипед, который разорвёт твой бандл.

Pavel- Автор вопроса
.
Смотри, ты можешь рендерить семантику от пропса, к...

Можно хотя бы минимальный пример? Не совсем понимаю из текста, как это можно реализовать.

.
Смотри, ты можешь рендерить семантику от пропса, к...

мне тоже непонятно было бы круто увидеть пример

Vyacheslav Гайсин
мне тоже непонятно было бы круто увидеть пример

Так ты уже у нас всё знаешь, чего мне тебя учить?) Я у тебя учиться должен)

.
Так ты уже у нас всё знаешь, чего мне тебя учить?)...

ты из чего такой вывод сделал? ты непонятно обьясняешь, тебя попросили показать пример

Vyacheslav Гайсин
ты из чего такой вывод сделал? ты непонятно обьясн...

Как мне тебе что-то попытаться объяснить, если ты не слушаешь и не пытаешься вникнуть? Ты сам для себя плодишь вопросы, когда ты слишком не понимаешь то, о чем ты говоришь

.
Как мне тебе что-то попытаться объяснить, если ты ...

я понимаю о чем говорю. Тебе следует пояснее выражаться, чтобы не плодились вопросы.

Pavel- Автор вопроса

Что-то вроде этого?

Pavel
Что-то вроде этого?

Да, только тут типы не задаются динамически от входящих параметров.

.
Да, только тут типы не задаются динамически от вхо...

а для чего здесь динамически задавать типы? просто обычный вопрос если что

Vyacheslav Гайсин
а для чего здесь динамически задавать типы? просто...

Будет у тебя один html тег, а типы от него под другой и переиспользуемость никакая?

.
Будет у тебя один html тег, а типы от него под дру...

вместе с используемым компонентом ты можешь импортировать интерфейс пропсов

Vyacheslav Гайсин
вместе с используемым компонентом ты можешь импорт...

У него разные теги button | div, там нужно чтобы от тега шли типы, поэтому так не выйдет задавать тип статически

.
У него разные теги button | div, там нужно чтобы о...

У тебя же все равно они будут статическими?!

.
У него разные теги button | div, там нужно чтобы о...

он может описать локально для компонентов Button, Input типы пропсов, и импортировать их для создания модели пропсов собственно

.
У него разные теги button | div, там нужно чтобы о...

дк а зачем это делать? если тебе все равно нужно рендерить разный JSX в зависимости от какого-то условия в рантайме?

Vyacheslav Гайсин
он может описать локально для компонентов Button, ...

Я же тебе написал выше, что у него 1 компонент и этот 1 компонент нужно сделать максимально переиспользуемым, там не выйдет статически задать типы

.
Я же тебе написал выше, что у него 1 компонент и э...

У компонента свои типы и когда создаешь структуру, то и описываешь в соответствии с типами

.
описываешь что?

структуру данных с которыми нужно будет работать

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
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
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта