openlang

TS2339 у label в TSX: React отклоняет атрибут for

При работе с typescript, react, файлами TSX и объявлениями definitely typed компиляция выдаёт такую ошибку:

  error TS2339: Property 'for' does not exist on type 'HTMLProps<HTMLLabelElement>'.

Это происходит при компиляции компонента со следующим TSX

  <label for={this.props.fieldId} className="field-caption">{this.props.caption}</label>

Я уже исправил проблему, но оставлю решение для тех, кто столкнётся с ней позже, поскольку ни Google, ни StackOverflow не помогли найти ответ

Переведено с английскогоПоказать оригинал

Разговор продолжается 2

Следуя доводам
  1. Ссылка на ответ

    Проблема решилась заменой атрибута for на htmlFor

      <label htmlFor={this.props.fieldId} className="field-caption">{this.props.caption}</label>

    Видимо, сам React особо обрабатывает for, подобно тому, как для class он требует className, поэтому объявления definitely typed здесь ни при чём.

    Переведено с английскогоПоказать оригинал
  2. Ссылка на ответ

    Ответ в основном верен, но я бы уточнил, что "htmlFor" и "className" относятся к JavaScript, а не являются особенностью React. Например, создание похожей метки на обычном JavaScript могло бы выглядеть примерно так:

      const captionNode = document.createElement('label');
      captionNode.htmlFor = "field";
      captionNode.innerText = "caption";
      captionNode.className = "field-caption";

    Вероятно, именно поэтому JSX (TSX) тоже использует "className" и "htmlFor" (JSX по сути представляет собой сокращённый синтаксис для прямого присваивания этих свойств Javascript).

    Переведено с английскогоПоказать оригинал

Другие стороны того же вопроса

  1. Как в Java Mail показывать текстовое имя отправителя вместо его настоящего адреса электронной почты

    Я отправляю сообщения через Java Mail API. После доставки во входящих отображается адрес отправителя. Хочу показывать вместо…

    Ответы 2Последняя активность java
  2. Доступ к Dynamics CRM из TypeScript

    Мой код CRM выполняется в веб-ресурсе, поэтому для получения данных сущности приходится писать чтобы обратиться к этим данным…

    Ответы 2Последняя активность typescript
  3. Какой формат даты нужен заголовку HTTP-ответа в Gleam?

    Я хочу отправлять заголовок Date. Требуемый формат выглядит следующим образом: Вот мой текущий вариант кода:

    Ответы 3Последняя активность gleam