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

Добрый вечер Есть массив объектов филдов для формы (текст инпуты, селекты,

чекбоксы). Как будет правильнее их мапить, чтобы нужный компонент подставлялся, в зависимости от значения type в объекте филда. Тернарники/ифы/свичи использовать не хочется. Как правильнее будет в данной ситуации поступить?

13 ответов

5 просмотров
Isagi- Автор вопроса

ап

const map = { [Type.Input]: () => <Input/>, [Type.Checkbox]: () => <Checkbox/>, } {map[type]() или const Component = map[type]() <Component/>

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

а как пропсы прокидывать, через cloneElement?

Isagi
а как пропсы прокидывать, через cloneElement?

можно в аргументы функции передать, например или, собственно, в пропсы в варианте, если у тебя эта функция будет рендериться как компонент

Isagi- Автор вопроса
Isagi- Автор вопроса
Veli
const map = { [Type.Input]: () => <Input/>, [T...

а поч кстати () => <Input />, а не просто <Input /> или Input?

Isagi
огонь, спасибо

по идее у тебя даже типизация должна корректно работать и подсказывать все

Isagi
а поч кстати () => <Input />, а не просто <Input /...

не просто <Input/>, потому что у тебя: 1) сразу же будет создаваться этот компонент. Даже до его вставки 2) у тебя будет общий инстанс инпута на все применения

Isagi- Автор вопроса
Veli
const map = { [Type.Input]: () => <Input/>, [T...

извиняюсь за долгий ответ Тут кажется вызов лишний, если просто map[type] делать, то выводит, если добавить (), то ломается Возможно как то избежать того, что нужно дублировать типизацию для каждого филда? Т.е. я когда пишу (props) => <Input /> мне нужно props типизировать или он будет any

Isagi
извиняюсь за долгий ответ Тут кажется вызов лишний...

во втором варианте лишний, да в первом нужен касаемо пропсов - кажется, у каждого типа компонента в теории должны быть разные пропсы но если у тебя по какой-то причине одинаковые, то можешь просто описать тип как Record<Type, FC<твоиПропсы>>

Isagi- Автор вопроса
Veli
во втором варианте лишний, да в первом нужен кас...

Согласен, да. До того, как ты написал, думал, что придется из каждого филда импортить тип и вставлять, но сейчас понял, что там не все пропсы понадобятся Как считаешь, нормальный вообще подход, если у меня есть тупые инпут/селект/чекбокс из которых я уже сделал филды для форм (добавил лейблы, доп. классы и тд)? И правильно ли с точки зрения фсд это всё в shared хранить? В очередной раз спасибо бтв)

Isagi
Согласен, да. До того, как ты написал, думал, что ...

да, должен быть отдельный ui кит с базовыми компонентами и отдельно биндинги к форме, потому что не всегда ты будешь использовать их в форме ui кит должен лежать в shared/ui биндинги непонятно, но я когда делал ложил в shared/lib/form. Название либы может быть любым, для примера указал. Сама суть в том, что биндинги для формы не являются ui китом, несмотря на то, что являются компонентами

Veli
да, должен быть отдельный ui кит с базовыми компон...

когда я отвечал в чате fsd, что как будто бы такое нужно в либ класть, вроде, реакции были в основном положительные кто-то в ui кладет, кто-то вот в lib. Можешь поискать по ключевым словам, может найдешь, я там заводил диалог на эту тему

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

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

Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
32
А чем вам питонисты не угодили?😂
.
79
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Дорогие любители Прекрасной Джулии! Есть кто-то имеющий практический опыт построения ML для Систем Управления? Нам нужно сделать нейросеть для автоматической подстройки пара...
Roman Timo
4
С той же поддержкой Android в тулчейне, если кому интересно. На Swift Forums шло убогое обсуждение всякой херни годами, но ничего годного так и не появлялось. Пришел vgorloff ...
iMike
1
Dim Dim, [02.07.2024 11:07] DB 0x62 Dim Dim, [02.07.2024 11:07] DB 0x66 Dim Dim, [02.07.2024 11:07] кто пояснит что это?
Dim Dim
14
Приветствую ребята,у меня база есть,прорешал много задач с литкода,там деревья,списки, бэктрэкинг и все остальное,что мне сейчас делать?есть может куда устроиться поработать,е...
Aקuст Lеתסuд Aקuст Lеתסuд
5
Всех приветствую. Направьте меня в нужное русло. Постепенно переписываю проект с delphi на lazarus. Приложение - обычный windows/linux клиент для бд firebird. Тут все хорошо. ...
Mishutka
7
Anybody want this chat app? If anybody interested dm  me.. Note - Firstly payment then i send you code but i will show work on gmeet.
Rayyan Ahmad
5
Карта сайта