2
respostas

[Dúvida] useState e useEffect no Nextjs

Bom dia! Estou com uma dúvida no meu projeto. Não consigo utilizar o useState e o useEffect efetivamente. Já tentei utilizando o "use client" nas páginas onde pretendo usa-los, mas não tenho retorno. Também já tentei deixando elas dinamicas na hora da chamada, sem sucesso também. Alguém tem alguma dica? É meu primeiro projeto nextjs.

Desde já muito obrigado!

2 respostas

Olá Jorge! Tudo ok contigo?

Primeiramente, é importante lembrar que o useState e o useEffect são hooks do React, e podem ser utilizados no Next.js da mesma forma que em qualquer outro projeto React.

Para utilizar o useState, você precisa importá-lo do pacote 'react' e declarar uma variável de estado. Por exemplo:

import React, { useState } from 'react';

function MeuComponente() {
  const [contador, setContador] = useState(0);

  return (
    <div>
      <p>Contador: {contador}</p>
      <button onClick={() => setContador(contador + 1)}>Incrementar</button>
    </div>
  );
}

No exemplo acima, estamos utilizando o useState para criar uma variável de estado chamada 'contador', e o setContador para atualizar o valor desse estado.

Já o useEffect é utilizado para executar efeitos colaterais, como chamadas a APIs ou manipulação do DOM. Por exemplo:

import React, { useEffect } from 'react';

function MeuComponente() {
  useEffect(() => {
    console.log('O componente foi montado');

    return () => {
      console.log('O componente foi desmontado');
    };
  }, []);

  return <div>Meu componente</div>;
}

No exemplo acima, estamos utilizando o useEffect para exibir mensagens no console quando o componente é montado e desmontado.

Se você está tendo problemas ao utilizar esses hooks, verifique se você está importando corretamente o useState e o useEffect, e se está utilizando-os dentro de um componente funcional.

Espero que essas dicas te ajudem a resolver o seu problema. Se tiver mais alguma dúvida, é só me dizer!

Espero ter ajudado, abraços e bons estudos!

Então, de fato o exemplo só funciona quando a página é carregada, mas quando clico no botão 'Incrementar' ele não atualiza na página, e nem sequer consigo ver um console.log disso. Tem alguma ideia do porquê?