Saya telah bermain-main dengan React dan memiliki komponen waktu berikut yang baru saja ditampilkan Date.now()
di layar:
import React, { Component } from 'react';
class TimeComponent extends Component {
constructor(props){
super(props);
this.state = { time: Date.now() };
}
render(){
return(
<div> { this.state.time } </div>
);
}
componentDidMount() {
console.log("TimeComponent Mounted...")
}
}
export default TimeComponent;
Apa cara terbaik agar komponen ini diperbarui setiap detik untuk menggambar ulang waktu dari perspektif React?
javascript
reactjs
pembunuh kepingan salju
sumber
sumber
react-interval-rerender
Kode berikut adalah contoh modifikasi dari situs web React.js.
Kode asli tersedia di sini: https://reactjs.org/#a-simple-component
sumber
updater
@Waisky menyarankan:
Jika Anda ingin melakukan hal yang sama, menggunakan Hooks:
Mengenai komentar:
Anda tidak perlu memasukkan apapun ke dalam
[]
. Jika Anda mengirimkantime
tanda kurung, itu berarti menjalankan efek setiap kali nilaitime
perubahan, yaitu, memanggil yang barusetInterval
setiap kali,time
berubah, yang bukan yang kita cari. Kami hanya ingin memanggilsetInterval
sekali ketika komponen dipasang dan kemudiansetInterval
memanggilsetTime(Date.now())
setiap 1000 detik. Akhirnya, kami memanggilclearInterval
saat komponen dilepas.Perhatikan bahwa komponen diperbarui, berdasarkan cara Anda menggunakannya
time
, setiap kali nilaitime
berubah. Yang tidak ada hubungannya dengan menempatkantime
di[]
dariuseEffect
.sumber
[]
) sebagai argumen keduauseEffect
?Dalam
componentDidMount
metode siklus hidup komponen , Anda bisa menyetel interval untuk memanggil fungsi yang memperbarui status.sumber
sumber
Jadi Anda berada di jalur yang benar. Di dalam Anda,
componentDidMount()
Anda dapat menyelesaikan pekerjaan dengan menerapkansetInterval()
untuk memicu perubahan, tetapi ingat cara untuk memperbarui status komponen adalah melaluisetState()
, jadi di dalam Anda,componentDidMount()
Anda dapat melakukan ini:Juga, Anda menggunakan
Date.now()
yang berfungsi, dengancomponentDidMount()
implementasi yang saya tawarkan di atas, tetapi Anda akan mendapatkan serangkaian panjang pembaruan angka-angka buruk yang tidak dapat dibaca manusia, tetapi secara teknis waktu memperbarui setiap detik dalam milidetik sejak 1 Januari 1970, tetapi kami ingin membuat waktu ini mudah dibaca sebagaimana kita manusia membaca waktu, jadi selain belajar dan menerapkansetInterval
Anda ingin belajar tentangnew Date()
dantoLocaleTimeString()
dan Anda akan menerapkannya seperti ini:Perhatikan saya juga menghapus
constructor()
fungsinya, Anda tidak perlu itu, refactor saya 100% setara dengan menginisialisasi situs denganconstructor()
fungsi tersebut.sumber
Karena perubahan pada React V16 di mana componentWillReceiveProps () tidak digunakan lagi, ini adalah metodologi yang saya gunakan untuk memperbarui komponen. Perhatikan bahwa contoh di bawah ini ada di Typecript dan menggunakan metode getDerivedStateFromProps statis untuk mendapatkan status awal dan status yang diperbarui setiap kali Alat Peraga diperbarui.
sumber