Итак, вы были на правильном пути. Внутри себя 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