Итак, вы были на правильном пути. Внутри себя componentDidMount()вы могли бы завершить работу, выполнив setInterval()запуск изменения, но помните, что способ обновления состояния компонентов - через setState(), поэтому внутри componentDidMount()вы могли бы сделать это:
componentDidMount() {
setInterval(() => {
this.setState({time: Date.now()})
}, 1000)
}
Кроме того, вы используете то, Date.now()что работает, с componentDidMount()реализацией, которую я предложил выше, но вы получите длинный набор обновлений неприятных чисел, которые не читаются человеком, но технически это время, обновляющееся каждую секунду в миллисекундах с 1 января 1970 года, но мы хочу , чтобы на этот раз для чтения , как мы люди чтения времени, поэтому в дополнении к обучению и реализации setIntervalвы хотите узнать о new Date()и toLocaleTimeString()и вы бы реализовать это нравится так:
class TimeComponent extends Component {
state = { time: new Date().toLocaleTimeString() };
}
componentDidMount() {
setInterval(() => {
this.setState({ time: new Date().toLocaleTimeString() })
}, 1000)
}
Обратите внимание, что я также удалил constructor()функцию, она вам не обязательно нужна, мой рефакторинг на 100% эквивалентен инициализации сайта с помощью constructor()функции.
react-interval-rerender