Html-react-parser: lowerCaseAttributeNames: false, не выполняет свою работу. атрибуты по-прежнему представляют собой только символы нижнего регистра.

Созданный на 26 июл. 2020  ·  9Комментарии  ·  Источник: remarkablemark/html-react-parser

Ожидаемое поведение


Имя атрибута textarea: "defaultValue" должно оставаться в верхнем регистре, но вместо этого становится символом нижнего регистра: "defaultvalue".
Я использую ключ параметра htmlparser2 для определения связанных параметров, чтобы заставить это работать, но это все равно не удалось.

Фактическое поведение


defaultValue становится значением по умолчанию (символ нижнего регистра "v") даже при настройке параметров htmlparser2 (см. ниже).

Действия по воспроизведению


используйте шаблон html с элементами узла с именами атрибутов, содержащими символы в верхнем регистре, проанализируйте их, используйте параметр htmlparse2, чтобы попытаться удалить lowerCaseAttributeNames, и посмотрите на результат ... имена атрибутов еще в нижнем регистре.

Воспроизводимая демонстрация

textarea(type='text' id='message' name='message'
                        rows="4" cols="50" defaultValue="")

(шаблон мопса доставлен клиенту реакции, затем console.log показывает, что отображаемый текст шаблона по-прежнему имеет имена атрибутов символов в верхнем регистре)

parse(this.state.content, 
            { htmlparser2: {
                xmlMode: true,
                lowerCaseAttributeNames: false,
                lowerCaseTags: false
              } 
            } )

Среда

  • Версия:
    0,13,0
  • Платформа:
    Archlinux
  • Браузер:
    firefox-78.0.2

Все 9 Комментарий

Спасибо за открытие этого выпуска @ jerome-diver. Можете ли вы помочь мне воспроизвести эту проблему на Repl.it , JSFiddle или CodeSandbox ?

Нет, я не могу. Но у вас есть все необходимые элементы для воспроизведения проблемы. Просто проанализируйте строку html, содержащую имя атрибутов в верхнем регистре, и вы увидите.

@remarkablemark Я тоже с этим сталкиваюсь. Вот довольно тривиальный тестовый пример: https://repl.it/repls/FriendlyYearlyPublisher#index.js. Я считаю, что это работает на Node, но я тоже испытываю это в браузере.

Я ожидаю, что type в возвращаемом объекте будет MyCustomUppercaseComponent , а не mycustomuppercasecomponent . Это правильное понимание флага lowerCaseTags ?

Спасибо!

@lazerwalker Какую версию html-react-parser вы используете? Я вижу в вашем Repl.it, что вы используете 0.10.1 .

Эта функция была доступна в версии 0.12.0 . Кроме того, это работает только на стороне сервера (Node.js) и не работает на стороне клиента (браузер).

См. Repl.it вашего рабочего примера.

ага, извините за это - я просто щелкнул ссылку Repl.it, которую вы разместили выше, и использовал все, что она мне дала. Но локально у меня не получится, так как я делаю это в браузере.

README не указывает, что эта функция не работает в браузере. Я счастлив отправить PR, чтобы обновить его, но просто хотел подтвердить: это конкретно этот флаг, который не поддерживается, или изменение каких-либо настроек htmlparser2?

@lazerwalker Да, мы благодарны за PR, чтобы явно указать, что эта функция доступна в> = 0.12.0 и работает только на сервере (Node.js), а не на клиенте (браузере).

Чтобы заставить эту функцию работать в браузере, могут потребоваться некоторые усилия, поскольку в html-dom-parser htmlparser2 доступен только на Node.js и намеренно не включен в пакет браузера из-за своего большого размера.

Для меня это тоже проблема. У кого-нибудь есть обходной путь?

Мне лично не удалось найти решение для браузера (а не для Node), но я не смотрел на это год.

Я тоже ищу решение этой проблемы, наше приложение работает в браузере ...? Собственно этот вопрос нужно открывать повторно @remarkablemark ?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги