คุณมาถูกทางแล้ว ภายในของ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