คุณมาถูกทางแล้ว ภายในของ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()ฟังก์ชันออกไปแล้วคุณไม่จำเป็นต้องใช้มันตัวปรับแต่งของฉันเทียบเท่ากับการเริ่มต้นไซต์ด้วยconstructor()ฟังก์ชันได้100%
react-interval-rerender