Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

243
Visualizações
TypeError: text.substr is not a function

I'm trying to make a simple component in order to integrate a readmore function into it to reuse it in my application, but I'm having a problem that I don't understand. After several searches, I wonder if this is not a subtlety of NextJS? Anybody have an idea? Thanks

import React, { useState } from 'react';

const ReadMore = ({ limit, children }) => {
  const text = children;

  const [isReadMore, setReadMore] = useState(false);

  const toggleBtn = () => {
    setReadMore((prevState) => !prevState);
  };

  return (
    <div>
      {isReadMore ? text : text.substr(0, limit)}
      <button onClick={toggleBtn}>
        {isReadMore ? 'Réduire' : '... en savoir +'}
      </button>
    </div>
  );
};

export default ReadMore;



using readmore in a component
              <ReadMore limit={200}>
                <p>
                  Lorem ipsum dolor sit amet, consectetur lorem,
                  sed do eiusmod tempor incididunt ut lab lorem.
                  Ut enim ad minim veniam,Lorem ipsum dolor, sit
                  amet consectetur adipisicing elit. Nobis
                  consectetur molestias provident perferendis
                  voluptates veniam accusantium, quibusdam quod,
                  dignissimos iusto, eum error itaque ab harum.
                  Illum sequi neque consequuntur fugit Lorem,
                  ipsum dolor sit amet consectetur adipisicing
                  elit. Distinctio consectetur sit dolores, beatae
                  error ipsum eos est quidem, soluta nobis,
                  perferendis voluptatum? Dolor similique minus
                  assumenda doloremque corrupti aliquam nulla.
                
                </p>
              </ReadMore>````
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

I would suggest adding text as a prop and not using children since children is not a string (as Akshit pointed out).

import React, { useState } from 'react';

const ReadMore = ({ limit, text }) => {
  const [isReadMore, setReadMore] = useState(false);

  const toggleBtn = () => {
    setReadMore((prevState) => !prevState);
  };

  return (
    <div>
      <p>
        {isReadMore ? text : text.substr(0, limit)}
      </p> 
      <button onClick={toggleBtn}>
        {isReadMore ? 'Réduire' : '... en savoir +'}
      </button>
    </div>
  );
};

export default ReadMore;

// <ReadMore limit={200} text={text}>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda