#javascript #slice
Вопрос:
Я внедряю кнопку «Больше читать», «меньше читать» в приложении nextjs с бэкэндом strapi. Я пытаюсь использовать .slice, но текст поступает из API через компонент ReactMarkdown.
Поэтому я получаю эту ошибку :
TypeError : text.slice is not a function
Я начал с этого, прежде чем меня остановила ошибка
const ReadMore = ({ дети, максимальное количество символов = 100 }) => { текст const = дети;
строка результата const = text.slice(0, 100);
возвращение (
{Строка результата} Подробнее {/* {Усечено ? «Voir plus» : «Voir moins»} */}
);
<ReadMore>
<ReactMarkdown source={item.texte} />
</ReadMore>
Комментарии:
1. Попробуйте превратить текст в массив, сначала вызвав
.split()
метод для него, прежде чем разрезать его.text.split()
тогдаtext.slice(0, 100)
.2. Что
text
на самом деле содержит? Если это строка,slice(0,100)
она должна работать просто отлично. Основываясь на его первоначальном названииchildren
, я предполагаю, что вы пытаетесь использовать его в массиве DOM или что-то в этом роде3. На самом деле текст содержит <p> и <p><h> заголовки, а не только одну строку
4. Хорошо, да, если вы хотите использовать строковые методы, вам нужно сначала убедиться, что вы работаете со строкой. (И если ваша строка содержит HTML-теги, вы определенно не хотите произвольно усекать ее, потому что в итоге вы отрежете середину тега или сохраните
<p>
и отбросите его</p>
-вместо этого вам нужно будет войти в это дерево и обрезать только текстовые части.)5. Ах да. Я не думал об этом. Таким образом, это невозможно сделать с богатым маркированным текстом из моего бэк-офиса, но только с помощью простых текстовых областей?