Что такое тип для JSX React 'div | п'?

Я создаю пользовательский компонент и хочу передать имя элемента в качестве реквизита для компонента, например div или p; HTMLElement

Загвоздка в том, что это должен быть блочный или встроенный элемент.

export const MyComponent = props => {
  const currentNode = useRef()
  const { tag: Comp } = props
  return <Comp ref = {currentNode}>Strawberry Kisses!</Comp>
}

Как видите, я разрушаю структуру prop, чтобы получить значение tag (Component) и передаю его как элемент.

В настоящее время интерфейс ниже выдает ошибку

Type '{ ref: MutableRefObject<undefined>; }' is not assignable to type 'IntrinsicAttributes'.
  Property 'ref' does not exist on type 'IntrinsicAttributes'.ts(2322)
interface MyProps extends React.ClassAttributes<MyComponent> {
  tag: string;
}

Мне нужно в основном проверить if (tag == HTMLElement && tag === JSX.IntrinsicElements) { return 'this is the correct type and allow it' }

Любая помощь в направлении приветствуется.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
82
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваша ошибка не имеет ничего общего с вашим вопросом, насколько я могу судить.

Чтобы исправить вашу ошибку, вам нужно сделать <Comp ref = {currentNode.current}>

Следующая ошибка, с которой вы, вероятно, столкнетесь, заключается в том, что вы не передаете свойство тега своему дочернему компоненту.

Чтобы на самом деле ответить на ваш вопрос, я не думаю, что существует какое-либо встроенное перечисление или тип всех имен тегов HTML, поэтому вам придется определить его самостоятельно, тем более что кажется, что вы хотите что-то еще более конкретное.

Недавно я посмотрел, и я думаю, что теория перечисления верна. Они используют enum в исходных файлах реакции, поэтому мне придется составить список самому. Спасибо, шаг в правильном направлении.

Wayne Van Son 28.06.2019 02:47

Другие вопросы по теме