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 ответов

20 просмотров

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

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

С тс все хорошо, ругается реакт на 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
Аааа, я слепой, штош, зря быканул

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

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
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
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта