Więc byłeś na dobrej drodze. Wewnątrz componentDidMount()mógłbyś zakończyć zadanie, implementując, setInterval()aby wywołać zmianę, ale pamiętaj, że sposób zaktualizowania stanu komponentów jest za pośrednictwem setState(), więc wewnątrz componentDidMount()mógłbyś to zrobić:
componentDidMount() {
setInterval(() => {
this.setState({time: Date.now()})
}, 1000)
}
Używasz również tego, Date.now()co działa, z componentDidMount()implementacją, którą zaoferowałem powyżej, ale otrzymasz długi zestaw paskudnych aktualizacji liczb, które nie są czytelne dla człowieka, ale jest to technicznie czas aktualizowany co sekundę w milisekundach od 1 stycznia 1970 r., Ale my chcesz, aby ten czas był czytelny dla tego, jak my, ludzie, czytamy czas, więc oprócz uczenia się i wdrażania setIntervalchcesz się o nim dowiedzieć new Date()i toLocaleTimeString()wdrożyć go w następujący sposób:
class TimeComponent extends Component {
state = { time: new Date().toLocaleTimeString() };
}
componentDidMount() {
setInterval(() => {
this.setState({ time: new Date().toLocaleTimeString() })
}, 1000)
}
Zauważ, że usunąłem również constructor()funkcję, niekoniecznie jej potrzebujesz, mój refaktor jest w 100% równoważny z zainicjowaniem strony z constructor()funkcją.
react-interval-rerender