Saya melihat dokumentasi Facebook di ( React.Component ) dan menyebutkan bagaimana componentWillMount
dipanggil pada klien / server sedangkan componentDidMount
hanya dipanggil pada klien. Apa componentWillMount
hubungannya dengan server?
91
yang
constructor
metode tidak sama dengancomponentWillMount
.Menurut penulis Redux, berisiko mengirimkan tindakan dari konstruktor karena dapat mengakibatkan mutasi status saat rendering.
Namun, mengirim dari
componentWillMount
tidak apa-apa.dari masalah github :
sumber
componentXxxMount
, misalnya, Ajax inwillMount
dapat menyebabkan masalah.Untuk menambah apa yang dikatakan FakeRainBrigand,
componentWillMount
dipanggil saat merender React di server dan di klien, tetapicomponentDidMount
hanya dipanggil di klien.sumber
componentWillMount
akan dipanggil di server dan klien. lihat: facebook.github.io/react/docs/…componentWillMount
akan dipanggil pada kliencomponentWillMount
dilakukan sebelum AWALrender
sebuah komponen, dan digunakan untuk menilai props dan melakukan logika tambahan berdasarkan mereka (biasanya untuk juga memperbarui status), dan dengan demikian dapat dilakukan di server untuk mendapatkan markup yang diberikan sisi server pertama .componentDidMount
dilakukan SETELAH awalrender
ketika DOM telah diperbarui (tetapi yang terpenting SEBELUM pembaruan DOM ini dilukis ke browser, memungkinkan Anda untuk melakukan semua jenis interaksi lanjutan dengan DOM itu sendiri). Ini tentu saja hanya dapat terjadi di browser itu sendiri dan tidak terjadi sebagai bagian dari SSR, karena server hanya dapat menghasilkan markup dan bukan DOM itu sendiri, ini dilakukan setelah dikirim ke browser jika menggunakan SSRInteraksi lanjutan dengan DOM yang Anda katakan? Whaaaat ?? ... Ya - pada titik ini karena DOM telah diperbarui (tetapi pengguna belum melihat pembaruan di browser) dimungkinkan untuk mencegat lukisan yang sebenarnya ke layar dengan menggunakan
window.requestAnimationFrame
dan kemudian melakukan hal-hal seperti mengukur yang sebenarnya Elemen DOM yang akan menjadi keluaran, di mana Anda dapat melakukan perubahan status lebih lanjut, sangat berguna misalnya menganimasikan ke ketinggian elemen yang memiliki konten panjang variabel yang tidak diketahui (karena Anda sekarang dapat mengukur konten dan menetapkan ketinggian ke animasi), atau untuk menghindari flash skenario konten selama beberapa perubahan status.Berhati-hatilah untuk menjaga perubahan status dalam hal apa pun
componentDid...
karena jika tidak dapat menyebabkan loop tak terbatas karena perubahan status juga akan menyebabkan render ulang, dan karenanya yang lain,componentDid...
terus, dan terus.sumber
setState
dalamcomponentDidMount
akan menyebabkan loop tak terbatas.componentDidMount
lagi dan lagi. componentDidMount dipanggil hanya sekali ketika komponen dipasang.Sesuai dokumentasi ( https://facebook.github.io/react/docs/react-component.html )
Metode yang diawali dengan kemauan dipanggil tepat sebelum sesuatu terjadi dan
Metode yang diawali dengan did dipanggil kanan setelah sesuatu terjadi.
sumber
componentWillMount https://daveceddia.com/where-fetch-data-componentwillmount-vs-componentdidmount/
https://developmentarc.gitbooks.io/react-indepth/content/life_cycle/birth/premounting_with_componentwillmount.html
Komponen kami tidak akan memiliki akses ke UI Asli (DOM, dll.). Kami juga tidak akan memiliki akses ke referensi anak-anak, karena mereka belum dibuat. ComponentWillMount () adalah kesempatan bagi kita untuk menangani konfigurasi, memperbarui status kita, dan secara umum mempersiapkan render pertama. Ini berarti kita dapat mulai melakukan perhitungan atau proses berdasarkan nilai prop.
sumber
Misalnya, jika Anda ingin menyimpan tanggal pembuatan komponen dalam status komponen Anda, Anda dapat mengaturnya dalam metode ini. Harap diingat bahwa pengaturan status dalam metode ini tidak akan merender ulang DOM. Ini penting untuk diingat, karena dalam kebanyakan kasus setiap kali kita mengubah status komponen, render ulang dipicu.
componentWillMount() { this.setState({ todayDate: new Date(Date.now())}); }
Misalnya, jika Anda membuat aplikasi berita yang mengambil data tentang berita terkini dan menampilkannya kepada pengguna dan Anda mungkin ingin data ini diperbarui setiap jam tanpa pengguna harus menyegarkan halaman.
componentDidMount() { this.interval = setInterval(this.fetchNews, 3600000); }
sumber
ComponentDidMount()
Metode hanya mengubah halaman saat ini di komponen kelas tetapiComponentWillMount()
mengubah semua halaman yang dipengaruhi olehsetStates()
sumber