text.slice не является функцией — Как вырезать некоторый текст из компонента ReactMardown?

#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. Ах да. Я не думал об этом. Таким образом, это невозможно сделать с богатым маркированным текстом из моего бэк-офиса, но только с помощью простых текстовых областей?