чекбоксы). Как будет правильнее их мапить, чтобы нужный компонент подставлялся, в зависимости от значения type в объекте филда. Тернарники/ифы/свичи использовать не хочется. Как правильнее будет в данной ситуации поступить?
ап
const map = { [Type.Input]: () => <Input/>, [Type.Checkbox]: () => <Checkbox/>, } {map[type]() или const Component = map[type]() <Component/>
а как пропсы прокидывать, через cloneElement?
можно в аргументы функции передать, например или, собственно, в пропсы в варианте, если у тебя эта функция будет рендериться как компонент
огонь, спасибо
а поч кстати () => <Input />, а не просто <Input /> или Input?
по идее у тебя даже типизация должна корректно работать и подсказывать все
не просто <Input/>, потому что у тебя: 1) сразу же будет создаваться этот компонент. Даже до его вставки 2) у тебя будет общий инстанс инпута на все применения
извиняюсь за долгий ответ Тут кажется вызов лишний, если просто map[type] делать, то выводит, если добавить (), то ломается Возможно как то избежать того, что нужно дублировать типизацию для каждого филда? Т.е. я когда пишу (props) => <Input /> мне нужно props типизировать или он будет any
во втором варианте лишний, да в первом нужен касаемо пропсов - кажется, у каждого типа компонента в теории должны быть разные пропсы но если у тебя по какой-то причине одинаковые, то можешь просто описать тип как Record<Type, FC<твоиПропсы>>
Согласен, да. До того, как ты написал, думал, что придется из каждого филда импортить тип и вставлять, но сейчас понял, что там не все пропсы понадобятся Как считаешь, нормальный вообще подход, если у меня есть тупые инпут/селект/чекбокс из которых я уже сделал филды для форм (добавил лейблы, доп. классы и тд)? И правильно ли с точки зрения фсд это всё в shared хранить? В очередной раз спасибо бтв)
да, должен быть отдельный ui кит с базовыми компонентами и отдельно биндинги к форме, потому что не всегда ты будешь использовать их в форме ui кит должен лежать в shared/ui биндинги непонятно, но я когда делал ложил в shared/lib/form. Название либы может быть любым, для примера указал. Сама суть в том, что биндинги для формы не являются ui китом, несмотря на то, что являются компонентами
когда я отвечал в чате fsd, что как будто бы такое нужно в либ класть, вроде, реакции были в основном положительные кто-то в ui кладет, кто-то вот в lib. Можешь поискать по ключевым словам, может найдешь, я там заводил диалог на эту тему
Обсуждают сегодня