国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Jadual Kandungan
Invariant: berpegang pada fakta
Gunakan objek yang tidak berubah
Invarians dalam React
Bacaan lanjut
Rumah hujung hadapan web tutorial css Memahami kebolehubahan dalam JavaScript

Memahami kebolehubahan dalam JavaScript

Apr 11, 2025 am 11:47 AM

Memahami kebolehubahan dalam javascript

Konsep invarians dalam JavaScript mungkin dikelirukan dengan penugasan semula yang berubah -ubah. Pembolehubah yang diisytiharkan menggunakan let atau var boleh ditugaskan semula, tetapi pembolehubah yang diisytiharkan oleh const tidak boleh.

Sebagai contoh, berikan "Kingsley" kepada pemboleh ubah bernama firstName :

 biarkan firstName = "Kingsley";

Penugasan semula boleh dilakukan:

 firstName = "John";

Ini kerana let digunakan. Sekiranya menggunakan const :

 const lastName = "Silas";

Cuba menugaskan semula akan mengakibatkan kesilapan:

 lastName = "Doe";
// TypeError: Tugasan kepada pembolehubah malar.

Tetapi ini bukan kebolehubahan.

Dalam rangka kerja seperti React, satu konsep penting adalah untuk mengelakkan pengubahsuaian langsung negeri dan sifat (props). Invariance bukan konsep yang unik dari React, tetapi prinsip penting yang bertindak balas menggunakan ketika berurusan dengan negara dan sifat.

Jadi, apakah maksud invariance?

Invariant: berpegang pada fakta

Data yang tidak berubah tidak boleh mengubah strukturnya atau data di dalamnya. Ia memberikan nilai kepada pembolehubah yang tidak dapat diubah, menjadikan nilai sebagai sumber kebenaran dalam rasa seperti seorang puteri mencium katak dan ingin menjadi putera kacak. Invariance bermaksud bahawa katak akan sentiasa menjadi katak.

Walaupun objek dan tatasusunan membenarkan mutasi, ini bermakna struktur data dapat diubah. Jika kita menceritakannya, mencium salah satu katak ini boleh membawa kepada transformasi yang menjadi putera.

Sebagai contoh, objek pengguna:

 biarkan pengguna = {name: "James Doe", lokasi: "lagos"};

Buat objek newUser baru:

 Biarkan Newuser = pengguna;

Jika pengguna pertama mengubah lokasi, ia akan mengubahsuai objek user secara langsung dan mempengaruhi newUser :

 user.location = "Abia";
console.log (newUser.location); // "Abia"

Ini mungkin bukan hasil yang kita mahukan. Penugasan ini mungkin mempunyai akibat yang tidak diingini.

Gunakan objek yang tidak berubah

Kita perlu memastikan objek itu tidak bermutasi. Jika anda ingin menggunakan kaedah, ia mesti mengembalikan objek baru. Pada asasnya, kita memerlukan fungsi murni .

Fungsi tulen mempunyai dua ciri:

  1. Nilai pulangan bergantung kepada parameter masuk. Selagi input tetap tidak berubah, nilai pulangan tidak akan berubah.
  2. Ia tidak mengubah perkara di luar skopnya.

Menggunakan Object.assign() , kita boleh membuat fungsi yang tidak mengubah objek masuk. Ia akan membuat objek baru dan menyalin parameter kedua dan ketiga ke dalam objek kosong yang diluluskan sebagai parameter pertama, dan kemudian mengembalikan objek baru.

 const updateLocation = (data, newLocation) => {
  kembali object.assign ({}, data, {lokasi: newLocation});
};

updateLocation() adalah fungsi tulen. Jika kita lulus dalam objek pengguna pertama, ia mengembalikan objek pengguna baru dengan atribut location yang mempunyai nilai baru.

Cara lain ialah menggunakan pengendali lanjutan:

 const updateLocation = (data, newLocation) => {
  kembali {... data, lokasi: newlocation};
};

Jadi, apa yang perlu dilakukan dengan React?

Invarians dalam React

Dalam aplikasi reaksi biasa, keadaan adalah objek. (Redux menggunakan objek invarian sebagai asas untuk penyimpanan aplikasi.) Proses koordinasi React menentukan sama ada komponen harus diberikan semula, atau sama ada ia memerlukan cara untuk mengesan perubahan.

Dalam erti kata lain, jika React tidak dapat menentukan bahawa status komponen telah berubah, ia tidak akan tahu untuk mengemas kini DOM maya.

Penguatkuasaan Invariance memungkinkan untuk mengesan perubahan ini. Ini membolehkan bertindak balas untuk membandingkan keadaan lama objek dan keadaan baru dan membuat semula komponen berdasarkan perbezaan itu.

Inilah sebabnya tidak biasanya disyorkan untuk mengemas kini status dalam React secara langsung:

 this.state.username = "JamesDoe";

React tidak akan pasti jika keadaan telah berubah dan komponen tidak boleh diubah.

Immutable.js

Redux mengikuti prinsip invarians. Pengurangannya mestilah fungsi murni, jadi mereka tidak boleh mengubah keadaan semasa, tetapi harus mengembalikan objek baru berdasarkan keadaan dan tindakan semasa. Kami biasanya menggunakan pengendali lanjutan seperti sebelumnya, tetapi kami boleh menggunakan perpustakaan yang dipanggil Immutable.js untuk mencapai kesan yang sama.

Walaupun JavaScript tulen boleh mengendalikan invarians, mungkin terdapat beberapa perangkap dalam proses. Gunakan Immutable.js untuk memastikan invarians semasa menyediakan API yang kaya dengan prestasi unggul. Artikel ini tidak akan masuk ke dalam butiran mengenai semua butir -butir Immutability.js, tetapi kami akan melihat contoh mudah yang menunjukkan cara menggunakannya dalam aplikasi tugas yang dikuasakan oleh React dan Redux.

Pertama, mari kita mulakan dengan mengimport modul yang diperlukan dan menubuhkan komponen TODO.

 const {list, Map} = Immutable;
const {provider, connect} = reactredux;
const {createStore} = redux;

Jika anda beroperasi di mesin tempatan, anda perlu memasang pakej ini:

 NPM Pasang Redux React-Redux Tidak Tua

Penyata import kelihatan seperti ini:

 import {senarai, peta} dari "tidak berubah";
import {penyedia, sambung} dari "React-redux";
import {createStore} dari "redux";

Kami kemudiannya boleh meneruskan komponen Todo kami dengan beberapa tag:

 // ... kod komponen todo ...

Kami menggunakan kaedah handleSubmit() untuk membuat item tugasan baru. Dalam kes ini, pengguna hanya akan membuat item tugasan baru, kita hanya memerlukan satu tindakan:

 // ... kod tindakan ...

Muatan yang kami buat mengandungi ID dan teks item tugasan. Kemudian, kita boleh meneruskan untuk menetapkan fungsi reducer dan lulus operasi yang kita buat di atas ke fungsi reducer:

 // ... kod reducer ...

Kami akan menggunakan connect untuk membuat komponen kontena supaya kami dapat menyambung ke storan. Kemudian, kita perlu lulus dalam fungsi mapStateToProps() dan mapDispatchToProps() untuk disambungkan.

 // ... sambungkan kod ...

Kami menggunakan mapStateToProps() untuk menyediakan data yang disimpan untuk komponen. Kami kemudian menggunakan mapDispatchToProps() untuk menjadikan Pencipta Operasi tersedia untuk komponen sebagai harta.

Dalam fungsi reducer, kami menggunakan List dari Immutable.js untuk membuat keadaan awal permohonan.

 // ... kod reducer ...

Fikirkan List sebagai pelbagai JavaScript, itulah sebabnya kita boleh menggunakan kaedah .push() di state . Nilai yang digunakan untuk mengemas kini keadaan adalah objek, yang terus menunjukkan bahawa Map boleh diiktiraf sebagai objek. Dengan cara ini, tidak perlu menggunakan Object.assign() atau pengendali lanjutan, kerana ia memastikan bahawa keadaan semasa tidak berubah. Ini kelihatan lebih ringkas, terutamanya apabila negeri -negeri bersarang secara mendalam - kita tidak perlu menggunakan pengendali lanjutan di mana -mana.

Keadaan yang tidak berubah membolehkan kod tersebut dengan cepat menentukan sama ada perubahan telah berlaku. Kami tidak perlu membandingkan data secara rekursif untuk menentukan sama ada terdapat perubahan. Yang mengatakan, adalah penting untuk menyebutkan bahawa anda mungkin mengalami masalah prestasi ketika berurusan dengan struktur data yang besar - ada harga untuk menyalin objek data yang besar.

Tetapi data perlu diubah kerana jika tidak, tidak ada keperluan untuk tapak atau aplikasi yang dinamik. Apa yang penting ialah cara menukar data. Invariance menyediakan cara yang betul untuk menukar data aplikasi (atau negeri). Ini memungkinkan untuk menjejaki perubahan dalam keadaan dan menentukan bahagian-bahagian permohonan yang harus diberikan semula disebabkan oleh perubahan itu.

Belajar tidak dapat dipertahankan untuk kali pertama boleh mengelirukan. Walau bagaimanapun, apabila negeri bermutasi, anda akan menghadapi kesilapan yang muncul, yang akan menjadikan anda lebih baik. Ini biasanya merupakan cara yang paling jelas untuk memahami keperluan dan faedah invarians.

Bacaan lanjut

  • Invariance dalam React dan Redux
  • Tanpa Takus.js 101 - Peta dan Senarai
  • Menggunakan Immutable.js dengan Redux

Ambil perhatian bahawa kerana teks asal mengandungi sejumlah besar blok kod, untuk mengekalkan pseudo-asal dan mengelakkan pengulangan yang berlebihan, saya mempermudahkan penerangan beberapa blok kod dan membuat sinonim dan senten-sentuhan kepada beberapa kenyataan. Format imej tetap sama.

Atas ialah kandungan terperinci Memahami kebolehubahan dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apa itu 'menyekat CSS'? Apa itu 'menyekat CSS'? Jun 24, 2025 am 12:42 AM

CSS Blok halaman yang diberikan kerana pelayar melihat CSS dalam talian dan luaran sebagai sumber utama secara lalai, terutamanya dengan stylesheet yang diimport, header sejumlah besar CSS sebaris, dan gaya pertanyaan media yang tidak dapat dioptimumkan. 1. Ekstrak CSS kritikal dan membenamkannya ke HTML; 2. Kelewatan memuatkan CSS bukan kritikal melalui JavaScript; 3. Gunakan atribut media untuk mengoptimumkan pemuatan seperti gaya cetak; 4. Memampatkan dan menggabungkan CSS untuk mengurangkan permintaan. Adalah disyorkan untuk menggunakan alat untuk mengekstrak CSS utama, menggabungkan REL = "Preload" pemuatan asynchronous, dan menggunakan media yang ditangguhkan dengan munasabah untuk mengelakkan pemisahan yang berlebihan dan kawalan skrip kompleks.

Luaran vs CSS Dalaman: Apakah pendekatan terbaik? Luaran vs CSS Dalaman: Apakah pendekatan terbaik? Jun 20, 2025 am 12:45 AM

Thebestapproachforcssdependonstantheproject'ssspecificneeds.forlargerprojects, externalcssisbetterduetomaintainabilityability;

Adakah CSS saya mesti berada di bawah kes? Adakah CSS saya mesti berada di bawah kes? Jun 19, 2025 am 12:29 AM

Tidak, cssdoesnothavetobeinlowercase.however, menggunakanLowerCaseisRecommendorfendfor: 1) Consistencyandreadability, 2) Mengelakkaningerrorsinrelatedtechnologies, 3) potensiformanceBenefits, dan4) peningkatan yang lebih baik.

Kepekaan kes CSS: Memahami apa yang penting Kepekaan kes CSS: Memahami apa yang penting Jun 20, 2025 am 12:09 AM

Cssismostlycase-insensitive, buturlsandfontfamilynamesarecase-sensitif.1) propertiesandvalueslikecolor: merah; arenotcase-sensitif.2) urlsmustmatchtheserver'scase, mis.,

Apakah AutoPrefixer dan bagaimana ia berfungsi? Apakah AutoPrefixer dan bagaimana ia berfungsi? Jul 02, 2025 am 01:15 AM

AutoPrefixer adalah alat yang secara automatik menambah awalan vendor ke atribut CSS berdasarkan skop penyemak imbas sasaran. 1. Ia menyelesaikan masalah mengekalkan awalan secara manual dengan kesilapan; 2. Bekerja melalui borang pemalam postcss, menghuraikan CSS, menganalisis atribut yang perlu diawali, dan menjana kod mengikut konfigurasi; 3. Langkah-langkah penggunaan termasuk memasang pemalam, menetapkan senarai pelayar, dan membolehkan mereka dalam proses membina; 4. Nota termasuk tidak menambah awalan secara manual, menyimpan kemas kini konfigurasi, awalan tidak semua atribut, dan disyorkan untuk menggunakannya dengan preprocessor.

Apakah kaunter CSS? Apakah kaunter CSS? Jun 19, 2025 am 12:34 AM

Csscounterscanautomaticallynumbersectionsandlists.1) useCounter-resettoinitialize, counter-incrementToinCrease, andCounter () orcounters () todisplayvalues.2) CombinWithjavascriptfordynamicContentToenSureAccurateupdates.

CSS: Bilakah kes perkara (dan kapan tidak)? CSS: Bilakah kes perkara (dan kapan tidak)? Jun 19, 2025 am 12:27 AM

Dalam CSS, nama pemilih dan atribut adalah sensitif kes, manakala nilai, warna yang dinamakan, URL, dan atribut tersuai adalah sensitif kes. 1. Nama pemilih dan atribut adalah kes-tidak sensitif, seperti warna latar belakang dan warna latar belakang adalah sama. 2. Warna heksadesimal dalam nilai adalah sensitif kes, tetapi warna bernama adalah sensitif kes, seperti merah dan merah tidak sah. 3. URL adalah sensitif kes dan boleh menyebabkan masalah pemuatan fail. 4. Sifat tersuai (pembolehubah) adalah sensitif kes, dan anda perlu memberi perhatian kepada konsistensi kes apabila menggunakannya.

Apakah fungsi conic-gradient ()? Apakah fungsi conic-gradient ()? Jul 01, 2025 am 01:16 AM

Function-gradient () functionIncsscreatesculculargradientsthatrotatecolorstopsaroundroentroint.1.ISIISIDEALFORPIECHARTS, Progressindicators, Colorwheels, andDecorativeBackgrounds.2.itworksByDefiningColorStopsatSpecificles, OpsticalStarting

See all articles