Então você estava no caminho certo. Dentro de seu, componentDidMount()você poderia ter concluído o trabalho implementando setInterval()para acionar a mudança, mas lembre-se de que a maneira de atualizar o estado de um componente é via setState(), portanto, dentro de seu componentDidMount()você poderia ter feito isso:
componentDidMount() {
setInterval(() => {
this.setState({time: Date.now()})
}, 1000)
}
Além disso, você usa o Date.now()que funciona, com a componentDidMount()implementação que ofereci acima, mas obterá um longo conjunto de atualizações de números desagradáveis que não são legíveis por humanos, mas é tecnicamente o tempo de atualização a cada segundo em milissegundos desde 1 de janeiro de 1970, mas nós deseja tornar este tempo legível para como nós, humanos, lemos o tempo, portanto, além de aprender e implementar, setIntervalvocê deseja aprender new Date()e toLocaleTimeString()implementá-lo da seguinte forma:
class TimeComponent extends Component {
state = { time: new Date().toLocaleTimeString() };
}
componentDidMount() {
setInterval(() => {
this.setState({ time: new Date().toLocaleTimeString() })
}, 1000)
}
Observe que também removi a constructor()função, você não precisa dela necessariamente, meu refator é 100% equivalente a inicializar o site com a constructor()função.
react-interval-rerender