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

Народ, помогите разобраться, я вот хочу как пропс подавать либо

кусок хтмл, например
<Component trigger={<button onClick={action}>Button</button>} />

Либо свой компонент
<Component trigger={<MyButton onClick={action}>Button</MyButton>} />

Как нормально прописать Component.propTypes и type ComponentProps чтобы тс и реакт не ругались?

Пробовал
1. instanceOf(Element)
2. elementType

В type ComponentProps = { trigger: ReactNode | ReactNode[] } вроде работает норм

26 ответов

6 просмотров

просто реакт.реактноде без массива

Юра- Автор вопроса
хиями
просто реакт.реактноде без массива

С тс все хорошо, ругается реакт на propTypes Warning: Failed prop type: Invalid prop `children` of type `Object` supplied to `Dropdown`, expected instance of `Element`.

- нет хтмл - ReactElement и ReactNode можно посмотреть в типах и преисполниться

Юра- Автор вопроса
Dmitry Remezov
- нет хтмл - ReactElement и ReactNode можно посмо...

Ну я подал как пропс тупо <button>Button</button>, ругается чтобы я не прописал в propTypes

Юра- Автор вопроса
Dmitry Remezov
Код бы

https://gist.github.com/YuraKolesnikov/47f12c2d10649af65e37cf5cd5dee567

Юра
https://gist.github.com/YuraKolesnikov/47f12c2d106...

Лол ты че, я думал, это манера речи такая, удали propTypes, у тебя тайпскрипт)))

Юра- Автор вопроса
Dmitry Remezov
Лол ты че, я думал, это манера речи такая, удали p...

Хм, я думал надо все равно дублировать))

Юра
Хм, я думал надо все равно дублировать))

Нет, они одно и то же делают, но тс лучше

Dmitry Remezov
Нет, они одно и то же делают, но тс лучше

не совсем. pt в рантайме в дев режиме

Юра- Автор вопроса
хиями
у проптайпса нет node?

node помог, спасибо, совсем забыл

Юра
node помог, спасибо, совсем забыл

Удали проп тайпс 👺👺👺👺

Юра
Зачем?

Да бесполезно, хоспаде

Юра- Автор вопроса
Dmitry Remezov
Да бесполезно, хоспаде

Вот кусок кода из настоящей профессиональной либы export interface AccordionProps extends Omit<React.HTMLAttributes<HTMLElement>, 'onSelect'>, BsPrefixProps { activeKey?: AccordionEventKey; defaultActiveKey?: AccordionEventKey; onSelect?: AccordionSelectCallback; flush?: boolean; alwaysOpen?: boolean; } const propTypes = { /** Set a custom element for this component */ as: PropTypes.elementType, /** @default 'accordion' */ bsPrefix: PropTypes.string, /** The current active key that corresponds to the currently expanded card */ activeKey: PropTypes.oneOfType([PropTypes.string, PropTypes.array]), /** The default active key that is expanded on start */ defaultActiveKey: PropTypes.oneOfType([PropTypes.string, PropTypes.array]), /** * Callback fired when the active item changes. * * ```js * (eventKey: string | string[] | null, event: Object) => void * * * @controllable activeIndex */ onSelect: PropTypes.func, /** Renders accordion edge-to-edge with its parent container */ flush: PropTypes.bool, /** Allow accordion items to stay open when another item is opened */ alwaysOpen: PropTypes.bool, }; ```

Dmitry Remezov
Да бесполезно, хоспаде

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

Юра- Автор вопроса
Dmitry Remezov
У тебя тс, ну приглядись, ты сидишь и дублируешь н...

Либа лежит отдельно от основного проекта, тс компилируется в жс и типы идут наюх, или я что-то не понимаю?

Юра
Вот кусок кода из настоящей профессиональной либы ...

Потому что либы могут подключаться и в приложения без тса 🤷‍♀️

Юра- Автор вопроса
Dmitry Remezov
Потому что либы могут подключаться и в приложения ...

Ну дык? Я ж выше написал, я выношу компоненты в либу, основной проект БЕЗ TS

Юра- Автор вопроса
Dmitry Remezov
Аааа, я слепой, штош, зря быканул

Все равно спасибо, не знал что они дублируются. Когда проект полностью переедет с жс на тс, удалю)

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

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

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
49
читать файл максимально быстро? странный вопрос))
zamtmn
53
How to create an OS in C? what to study?
Linus
18
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
@HemulGM Параметры у AddStream поменялись? Несостыковка какая-то
Катерина Свиридова
12
Подскажите, есть какие-то события создания/уничтожения у TFrame по типу TForm (OnCreate и OnClose/OnDestroy) ? Как отловить создание TFrame и "перед" уничтожением. На Tframe р...
Денис
8
а чем хуже?
Alexey Kulakov
10
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
1
Карта сайта