Apa itu data yang tidak dapat diubah
Data yang tidak dapat diubah mengacu pada data yang tidak dapat diubah setelah dibuat.
Dengan menggunakan data yang tidak dapat diubah, kami dapat dengan mudah berurusan dengan caching, fallback, deteksi perubahan data dan masalah lainnya, dan menyederhanakan pengembangan kami.
Data Immutable di JS
Dalam JavaScript, kami dapat mensimulasikan data yang tidak dapat diubah melalui klon dalam, yang berarti bahwa setiap kali kami beroperasi pada data, kami akan menggunakan klon dalam data untuk membuat data baru.
klon yang dalam
/** * Pembelajaran-Immutable-Clone-Deep.js * Dibuat oleh MDS pada 15/6/6. */'gunakan ketat'; var clonedeep = membutuhkan ('loDash.clonedeep'); var data = {id: 'data', penulis: {name: 'mdemo', github: 'https://github.com/demohi'}}; var data1 = clonedeep (data); data console.log ('setara:', ',', ',', ',', ',' Data ('Data); Data (' Data); Data ('Data); Data (' Data); //falsedata1.id = 'data1'; data1.author.name = 'demohi'; console.log (data.id); // data console.log (data1.id); // data1console.log (data.author.name); // mdemo console.log (data1.author.name); // demohiTentu saja Anda mungkin menyadari bahwa ini sangat lambat. Seperti yang ditunjukkan di bawah ini, memang sangat lambat
Immutable.js adalah proyek terbuka yang bersumber oleh Facebook. Ini terutama untuk menyelesaikan masalah data immutable JavaScript. Ini memberikan cara yang lebih efisien dengan merujuk pada percobaan peta hash dan percobaan vektor.
Sederhananya, Immutable.js memecahkan masalah kinerja melalui berbagi struktural. Mari kita tonton video pertama untuk melihat seberapa tidak immutable.js selesai
Ketika operasi yang ditetapkan terjadi, kekambuhan. JS hanya akan mengkloning bagian -bagian di atas tingkat induknya, dan yang lain akan tetap tidak berubah, sehingga setiap orang dapat berbagi bagian yang sama, yang dapat sangat meningkatkan kinerja.
Siapa pun yang akrab dengan React.js harus tahu bahwa React.js adalah kerangka kerja dengan UI = F (negara bagian). Untuk menyelesaikan masalah pembaruan, React.js menggunakan DOM virtual. DOM Virtual menggunakan Diff untuk memodifikasi DOM untuk mencapai pembaruan DOM yang efisien.
Kedengarannya sempurna, tetapi ada satu masalah. Ketika status diperbarui, jika data tidak berubah, Anda juga akan melakukan DOF DOFF virtual, yang akan menyebabkan limbah. Situasi ini sebenarnya sangat umum, silakan merujuk ke artikel Flummox
Tentu saja Anda dapat mengatakan bahwa Anda dapat menggunakan purerendermixin untuk menyelesaikannya. Purerendermixin adalah hal yang baik, kami dapat menggunakannya untuk menyelesaikan beberapa masalah di atas, tetapi jika Anda memperhatikan, Anda dapat melihat prompt berikut dalam dokumen.
Salinan kode adalah sebagai berikut:
Ini hanya dangkal membandingkan objek. Jika ini berisi struktur data yang kompleks, itu dapat menghasilkan negatif palsu untuk perbedaan yang lebih dalam. Hanya mencampur ke dalam komponen yang memiliki alat peraga dan status sederhana, atau menggunakan forceUpdate () ketika Anda tahu struktur data yang dalam telah berubah. Atau, pertimbangkan untuk menggunakan objek yang tidak dapat diubah untuk memfasilitasi perbandingan cepat dari data bersarang.
Purerendermixin hanyalah perbandingan dangkal sederhana dan tidak digunakan untuk perbandingan multi-lapisan. Apa yang harus saya lakukan? ? Jika Anda melakukan perbandingan yang kompleks sendiri, kinerjanya akan sangat buruk.
Solusinya adalah menggunakan Immutable.js untuk menyelesaikan masalah ini. Karena selama ada perubahan data dalam setiap pembaruan negara, purerendermixin dapat segera menentukan perubahan data, yang dapat sangat meningkatkan kinerja. Bagian ini juga dapat ditemukan di pembantu keabadian dokumen resmi
Ringkasan: Gunakan Purerendermixin + Immutable.js
React.js conf 2015 - data abadi dan bereaksi
Pembantu kekhasan
Purerendermixin
Immutable-Js