Возможно ли усечение выдержки с атрибутами DOM? HTML / JS - PullRequest
0 голосов
/ 13 апреля 2020

Я пытался сократить выдержку из Wordpress REST API, я пробовал атрибут maxLength HTML, но он не работает.

<p
  dangerouslySetInnerHTML={{ __html: excerpt.rendered }}
  maxLength={10}
/>

Есть ли способ, которым я может справиться с этим в JS / React?

Заранее спасибо

1 Ответ

0 голосов
/ 13 апреля 2020

Ваш вопрос вряд ли имеет какое-либо отношение к React, он больше касается .

HTML maxlength атрибут применим только к input и textarea теги , таким образом, он ничего не будет делать при применении к тегу p.

HTML изначально не имеет ничего подобного для p, поэтому пользовательская реализация необходим. Вы, очевидно, могли бы сделать:

'Long text of the article that is going to be shortened'.slice(0, 9).concat('…')

, что даст Long text…. Однако, поскольку вы используете dangerouslySetInnerHTML, я думаю, что excerpt.rendered содержит HTML тегов, поэтому вы не можете просто нарезать его.

В этом случае самым простым вариантом будет иметь 2 строки :

  1. Один, содержащий готовую к использованию разметку.
  2. Один, содержащий только текстовое содержимое.

Если это не вариант, вы можете попробовать парсинг HTML и извлечение только текстового содержимого (будьте осторожны, это может привести к неожиданным результатам):

const parsedExcerpt = new DOMParser().parseFromString(excerpt.rendered, 'text/html');
const excerptText = parsedExcerpt.body.innerText.trim();

Теперь вы можете безопасно использовать excerptText.slice(0, 9).concat('…') (более или менее).

...