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

22 просмотра

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

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

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
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...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
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
Карта сайта