Agora que o básico do nosso componente está funcional, é hora de implementar efetivamente o contador. Para isso, é preciso utilizar um hook do React, chamado useState;
O hookuseState
É chamado dentro de um componente funcional para atualizar e consumir o state de um componente. O state simboliza o estado atual de um componente.
O useState retorna um par: o valor do estado atual e uma função para atualizá-lo.
Voltando ao exemplo apresentado na etapa anterior, podemos mostrar na prática os conceitos abordados anteriormente. Para lembrar do exemplo, veja o código abaixo:
const [count, setCount] = useState(0)
No trecho acima é importante observar três coisas:
Na variável count, é possível consumir o estado atual;
Observe os detalhes: timeRemaining é o estado atual, setTime é a função de atualização do estado, TimeSplit é o tipo e, por fim, o objeto {hours: '00', minutes: '00', seconds: '00'} é o estado inicial do componente.
Adicione uma targetDate padrão para o caso de não haver um valor inicial definido. Vamos utilizar para isto uma data que é definida como dois dias a partir da data atual e ela será calculada em uma função utilitária que foi previamente importada da pasta /utils:
Criando a funcionalidade do bloco countdown
Introdução
Agora que o básico do nosso componente está funcional, é hora de implementar efetivamente o contador. Para isso, é preciso utilizar um hook do React, chamado
useState
;O hook
useState
É chamado dentro de um componente funcional para atualizar e consumir o state de um componente. O state simboliza o estado atual de um componente.
Voltando ao exemplo apresentado na etapa anterior, podemos mostrar na prática os conceitos abordados anteriormente. Para lembrar do exemplo, veja o código abaixo:
No trecho acima é importante observar três coisas:
count
, é possível consumir o estado atual;setCount
é uma função para atualizá-lo;0
é o valor do estado inicialAtividade
Precisamos importar algumas funções e tipos para continuar:
Adicione o hook de atualização de estado (
useState
)Adicione uma
targetDate
padrão para o caso de não haver um valor inicial definido. Vamos utilizar para isto uma data que é definida como dois dias a partir da data atual e ela será calculada em uma função utilitária que foi previamente importada da pasta/utils
:Utilize a função
tick
e a constanteDEFAULT_TARGET_DATE
para fazer o contador:Altere o
h1
para que ele exiba o contador que criamos. Para isso, precisamos utilizar o estado atualtimeRemaining
:Assim, com essas alterações, veremos a atualização em tempo real do contador! O resultado na home é esse: