cari
Rumahhujung hadapan webtutorial jsBermula dengan Redux: Mengapa Redux?

Apabila anda belajar bertindak balas, anda akan hampir selalu mendengar orang mengatakan betapa hebatnya Redux dan anda harus mencubanya. Ekosistem React berkembang pada kadar yang cepat, dan terdapat banyak perpustakaan yang boleh anda sambungkan dengan React, seperti aliran, redux, middlewares, mobx, dll.

Reaktik pembelajaran adalah mudah, tetapi membiasakan diri dengan keseluruhan ekosistem React memerlukan masa. Tutorial ini adalah pengenalan kepada salah satu komponen integral dari Ecosystem React -Redux.

Terminologi Asas Non-Redux

Berikut adalah beberapa terminologi yang biasa digunakan yang mungkin tidak biasa, tetapi mereka tidak khusus untuk redux per se. Anda boleh melangkah melalui bahagian ini dan kembali ke sini apabila/jika sesuatu tidak masuk akal.

Fungsi tulen

Fungsi tulen hanyalah fungsi biasa dengan dua kekangan tambahan yang perlu dipenuhi:

  1. Memandangkan satu set input, fungsi harus selalu mengembalikan output yang sama.
  2. Ia tidak menghasilkan kesan sampingan.

Sebagai contoh, di sini adalah fungsi tulen yang mengembalikan jumlah dua nombor.

 / * Fungsi tambah tulen */<br> const add = (x, y) => {<br> kembali xy;<br> }<br><br> console.log (tambah (2,3)) // 5<br><br>

Fungsi tulen memberikan output yang boleh diramal dan menentukan. Fungsi menjadi tidak suci apabila ia melakukan apa -apa selain mengira nilai pulangannya.

Sebagai contoh, fungsi Tambah di bawah menggunakan keadaan global untuk mengira outputnya. Di samping itu, fungsi ini juga log nilai kepada konsol, yang dianggap sebagai kesan sampingan.

 const y = 10;<br><br> const drimeadd = (x) => {<br> console.log (`input adalah $ {x} dan $ {y}`);<br> kembali xy;<br> }<br>

Kesan sampingan yang boleh diperhatikan

"Kesan sampingan yang dapat dilihat" adalah istilah mewah untuk interaksi yang dibuat oleh fungsi dengan dunia luar. Jika fungsi cuba menulis nilai ke dalam pembolehubah yang wujud di luar fungsi atau cuba memanggil kaedah luaran, maka anda dapat dengan selamat memanggil kesan sampingan ini.

Walau bagaimanapun, jika fungsi tulen memanggil fungsi tulen yang lain, maka fungsi itu boleh dianggap sebagai murni. Berikut adalah beberapa kesan sampingan yang sama:

  • membuat panggilan API
  • Pembalakan ke konsol atau mencetak data
  • Mutasi data
  • Manipulasi Dom
  • Mendapatkan masa sekarang

Komponen bekas dan persembahan

Memisahkan seni bina komponen ke dalam dua berguna semasa bekerja dengan aplikasi React. Anda boleh mengklasifikasikannya secara meluas kepada dua kategori: komponen kontena dan komponen persembahan. Mereka juga dikenali sebagai komponen pintar dan bodoh.

Komponen kontena prihatin dengan cara kerja, sedangkan komponen persembahan prihatin dengan bagaimana keadaan kelihatan. Untuk memahami konsep yang lebih baik, saya telah menutupnya dalam tutorial lain: Komponen Container vs Presentational dalam React.

Objek yang boleh berubah dan tidak berubah

Objek yang boleh berubah dapat ditakrifkan seperti berikut:

Objek yang boleh berubah adalah objek yang boleh diubahsuai selepas ia dibuat.

Ketidakhadiran adalah yang bertentangan -objek yang tidak berubah adalah objek yang negara tidak dapat diubah suai selepas ia dibuat. Dalam JavaScript, rentetan dan nombor tidak berubah, tetapi objek dan tatasusunan tidak. Contohnya menunjukkan perbezaan yang lebih baik.

 / *Rentetan dan nombor tidak berubah */<br><br> biarkan a = 10;<br><br> biarkan b = a;<br><br> B = 3;<br><br> console.log (`a = $ {a} dan b = $ {b}`); // a = 10 dan b = 3<br><br> / * Tetapi objek dan tatasusunan tidak */<br><br> / *Mari kita mulakan dengan objek */<br><br> biarkan pengguna = {<br> Nama: "Bob",<br> Umur: 22,<br> Pekerjaan: "Tiada"<br> }<br><br> aktif_user = pengguna;<br><br> aktif_user.name = "tim";<br><br> // Kedua -dua objek mempunyai nilai yang sama<br> console.log (aktif_user); // {"name": "tim", "umur": 22, "pekerjaan": "none"}<br><br> console.log (pengguna); // {"name": "tim", "umur": 22, "pekerjaan": "none"}<br><br> / * Sekarang untuk array */<br><br> Biarkan UsersId = [1,2,3,4,5]<br><br> Biarkan UsersIdDup = UsersId;<br><br> useridDup.pop ();<br><br> Console.log (UsersIdDup); // [1,2,3,4]<br> Console.log (UsersId); // [1,2,3,4]<br>

Untuk membuat objek tidak berubah, gunakan kedai.getState () -Untuk mengakses pokok keadaan semasa permohonan anda.

  • Store.subscribe (pendengar) -Untuk mendengar apa -apa perubahan di negeri ini. Ia akan dipanggil setiap kali tindakan dihantar.
  • Mari buat kedai. Redux mempunyai kaedah configureStore untuk membuat kedai baru. Anda perlu lulus pengurangan, walaupun kita tidak tahu apa itu. Jadi saya hanya akan membuat fungsi yang dipanggil reducer. Anda boleh secara pilihan menentukan hujah kedua yang menetapkan keadaan awal kedai.

    src/index.js

     import {configurestore} dari "redux";<br> // ini adalah pengurangan<br> const reducer = () => {<br> / *Ada sesuatu di sini */<br> }<br><br> // InitialState adalah pilihan.<br> // untuk demo ini, saya menggunakan kaunter, tetapi biasanya menyatakan objek<br> const initialState = 0<br> const store = configureStore (reducer, initialState);<br>

    Sekarang kita akan mendengar apa -apa perubahan di kedai, dan kemudian console.log() keadaan semasa kedai.

     store.subscribe (() => {<br> console.log ("Negeri telah berubah" store.getState ());<br> })<br>

    Jadi bagaimana kita mengemas kini kedai? Redux mempunyai sesuatu yang dipanggil tindakan yang membuat ini berlaku.

    Pencipta tindakan/tindakan

    Tindakan juga merupakan objek JavaScript biasa yang menghantar maklumat dari permohonan anda ke kedai. Jika anda mempunyai kaunter yang sangat mudah dengan butang kenaikan, menekannya akan menyebabkan tindakan dicetuskan yang kelihatan seperti ini:

     {<br> Jenis: "kenaikan",<br> muatan: 1<br> }<br>

    Mereka adalah satu -satunya sumber maklumat ke kedai. Keadaan kedai hanya berubah sebagai tindak balas kepada tindakan. Setiap tindakan harus mempunyai harta jenis yang menerangkan apa objek tindakan yang dimaksudkan untuk dilakukan. Selain itu, struktur tindakan itu sepenuhnya terpulang kepada anda. Walau bagaimanapun, pastikan tindakan anda kecil kerana tindakan mewakili jumlah minimum maklumat yang diperlukan untuk mengubah keadaan permohonan.

    Sebagai contoh, dalam contoh di atas, jenis harta ditetapkan kepada "kenaikan", dan harta muatan tambahan dimasukkan. Anda boleh menamakan semula harta muatan kepada sesuatu yang lebih bermakna atau, dalam kes kami, meninggalkannya sepenuhnya. Anda boleh menghantar tindakan ke kedai seperti ini.

     store.dispatch ({type: "kenaikan", muatan: 1});<br>

    Semasa pengekodan Redux, anda biasanya tidak akan menggunakan tindakan secara langsung. Sebaliknya, anda akan memanggil fungsi yang mengembalikan tindakan, dan fungsi -fungsi ini dikenali sebagai pencipta tindakan. Inilah pencipta tindakan untuk tindakan kenaikan yang dibincangkan sebelumnya.

     const incrementCount = (count) => {<br> kembali {<br> Jenis: "kenaikan",<br> muatan: kiraan<br> }<br> }<br>

    Oleh itu, untuk mengemas kini keadaan kaunter, anda perlu menghantar tindakan incrementCount seperti ini:

     store.dispatch (incrementCount (1));<br> store.dispatch (incrementCount (1));<br> store.dispatch (incrementCount (1));<br>

    Jika anda menuju ke konsol penyemak imbas, anda akan melihat bahawa ia berfungsi, sebahagiannya. Kami tidak dapat ditentukan kerana kami belum lagi mendefinisikan pengurangan itu.

    Bermula dengan Redux: Mengapa Redux?

    Jadi sekarang kita telah meliputi tindakan dan kedai. Walau bagaimanapun, kami memerlukan mekanisme untuk menukar maklumat yang disediakan oleh tindakan dan mengubah keadaan kedai. Pengurangan melayani tujuan ini.

    Pengurangan

    Tindakan menggambarkan masalah, dan pengurangan bertanggungjawab untuk menyelesaikan masalah. Dalam contoh terdahulu, kaedah incrementCount mengembalikan tindakan yang membekalkan maklumat mengenai jenis perubahan yang kami mahu buat kepada negara. Reducer menggunakan maklumat ini untuk benar -benar mengemas kini keadaan. Terdapat titik besar yang diserlahkan dalam dokumen yang harus anda ingat semasa menggunakan Redux:

    Memandangkan hujah -hujah yang sama, pengurangan harus mengira keadaan seterusnya dan mengembalikannya. Tiada kejutan. Tiada kesan sampingan. Tiada panggilan API. Tiada mutasi. Hanya pengiraan.

    Apa ini bermakna bahawa pengurangan harus menjadi fungsi murni. Memandangkan satu set input, ia harus sentiasa mengembalikan output yang sama. Selain itu, ia tidak sepatutnya melakukan apa -apa lagi. Juga, pengurangan bukanlah tempat untuk kesan sampingan seperti membuat panggilan Ajax atau mengambil data dari API.

    Mari isi reducer untuk kaunter kami.

     // ini adalah pengurangan<br><br> const reducer = (state = initialState, action) => {<br> suis (action.type) {<br> kes "kenaikan":<br> Kembali tindakan negara.payload<br> Lalai:<br> Kembali keadaan<br> }<br> }<br>

    Reducer menerima dua argumen -keadaan dan tindakan -dan ia mengembalikan keadaan baru.

     (sebelumnya, tindakan) => NewState<br>

    Negeri menerima nilai lalai, initialState , yang akan digunakan hanya jika nilai keadaan tidak ditentukan. Jika tidak, nilai sebenar negara akan dikekalkan. Kami menggunakan pernyataan Switch untuk memilih tindakan yang betul. Segarkan penyemak imbas, dan semuanya berfungsi seperti yang diharapkan.

    Mari tambahkan kes untuk DECREMENT , tanpa kaunter tidak lengkap.

     // ini adalah pengurangan<br><br> const reducer = (state = initialState, action) => {<br> suis (action.type) {<br> kes "kenaikan":<br> Kembali tindakan negara.payload<br> kes "penurunan":<br> Kembali Negeri - Tindakan.Payload<br> Lalai:<br> Kembali keadaan<br> }<br> }<br>

    Inilah pencipta tindakan.

     const decrementCount = (count) => {<br> kembali {<br> Jenis: "Penurunan",<br> muatan: kiraan<br> }<br> }<br>

    Akhirnya, hantar ke kedai.

     store.dispatch (incrementCount (4)); // 4<br> store.dispatch (decrementCount (2)); // 2<br>

    Itu sahaja!

    Ringkasan

    Tutorial ini dimaksudkan untuk menjadi titik permulaan untuk menguruskan negara dengan Redux. Kami telah meliputi semua perkara penting yang diperlukan untuk memahami konsep asas redux seperti kedai, tindakan, dan pengurangan. Menjelang akhir tutorial, kami juga mencipta kaunter demo Redux yang berfungsi. Walaupun tidak banyak, kami belajar bagaimana semua kepingan teka -teki bersesuaian.

    Selama beberapa tahun kebelakangan ini, React telah berkembang popular. Malah, kami mempunyai beberapa item di pasaran yang tersedia untuk pembelian, semakan, pelaksanaan, dan sebagainya. Jika anda mencari sumber tambahan di sekitar React, jangan ragu untuk menyemaknya.

    Dalam tutorial seterusnya, kami akan menggunakan perkara -perkara yang telah kami pelajari di sini untuk membuat aplikasi React menggunakan Redux. Tinggal sehingga itu. Kongsi pendapat anda dalam komen.

    Atas ialah kandungan terperinci Bermula dengan Redux: Mengapa Redux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan
    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
    Peranan JavaScript: Membuat Web Interaktif dan DinamikPeranan JavaScript: Membuat Web Interaktif dan DinamikApr 24, 2025 am 12:12 AM

    JavaScript adalah di tengah -tengah laman web moden kerana ia meningkatkan interaktiviti dan dinamik laman web. 1) Ia membolehkan untuk menukar kandungan tanpa menyegarkan halaman, 2) memanipulasi laman web melalui Domapi, 3) menyokong kesan interaktif kompleks seperti animasi dan drag-and-drop, 4) mengoptimumkan prestasi dan amalan terbaik untuk meningkatkan pengalaman pengguna.

    C dan JavaScript: Sambungan dijelaskanC dan JavaScript: Sambungan dijelaskanApr 23, 2025 am 12:07 AM

    C dan JavaScript mencapai interoperabilitas melalui webassembly. 1) Kod C disusun ke dalam modul WebAssembly dan diperkenalkan ke dalam persekitaran JavaScript untuk meningkatkan kuasa pengkomputeran. 2) Dalam pembangunan permainan, C mengendalikan enjin fizik dan rendering grafik, dan JavaScript bertanggungjawab untuk logik permainan dan antara muka pengguna.

    Dari laman web ke aplikasi: Aplikasi pelbagai JavaScriptDari laman web ke aplikasi: Aplikasi pelbagai JavaScriptApr 22, 2025 am 12:02 AM

    JavaScript digunakan secara meluas di laman web, aplikasi mudah alih, aplikasi desktop dan pengaturcaraan sisi pelayan. 1) Dalam pembangunan laman web, JavaScript mengendalikan DOM bersama -sama dengan HTML dan CSS untuk mencapai kesan dinamik dan menyokong rangka kerja seperti JQuery dan React. 2) Melalui reaktnatif dan ionik, JavaScript digunakan untuk membangunkan aplikasi mudah alih rentas platform. 3) Rangka kerja elektron membolehkan JavaScript membina aplikasi desktop. 4) Node.js membolehkan JavaScript berjalan di sisi pelayan dan menyokong permintaan serentak yang tinggi.

    Python vs JavaScript: Gunakan Kes dan Aplikasi MembandingkanPython vs JavaScript: Gunakan Kes dan Aplikasi MembandingkanApr 21, 2025 am 12:01 AM

    Python lebih sesuai untuk sains data dan automasi, manakala JavaScript lebih sesuai untuk pembangunan front-end dan penuh. 1. Python berfungsi dengan baik dalam sains data dan pembelajaran mesin, menggunakan perpustakaan seperti numpy dan panda untuk pemprosesan data dan pemodelan. 2. Python adalah ringkas dan cekap dalam automasi dan skrip. 3. JavaScript sangat diperlukan dalam pembangunan front-end dan digunakan untuk membina laman web dinamik dan aplikasi satu halaman. 4. JavaScript memainkan peranan dalam pembangunan back-end melalui Node.js dan menyokong pembangunan stack penuh.

    Peranan C/C dalam JavaScript Jurubah dan PenyusunPeranan C/C dalam JavaScript Jurubah dan PenyusunApr 20, 2025 am 12:01 AM

    C dan C memainkan peranan penting dalam enjin JavaScript, terutamanya digunakan untuk melaksanakan jurubahasa dan penyusun JIT. 1) C digunakan untuk menghuraikan kod sumber JavaScript dan menghasilkan pokok sintaks abstrak. 2) C bertanggungjawab untuk menjana dan melaksanakan bytecode. 3) C melaksanakan pengkompil JIT, mengoptimumkan dan menyusun kod hot-spot semasa runtime, dan dengan ketara meningkatkan kecekapan pelaksanaan JavaScript.

    JavaScript in Action: Contoh dan projek dunia nyataJavaScript in Action: Contoh dan projek dunia nyataApr 19, 2025 am 12:13 AM

    Aplikasi JavaScript di dunia nyata termasuk pembangunan depan dan back-end. 1) Memaparkan aplikasi front-end dengan membina aplikasi senarai TODO, yang melibatkan operasi DOM dan pemprosesan acara. 2) Membina Restfulapi melalui Node.js dan menyatakan untuk menunjukkan aplikasi back-end.

    JavaScript dan Web: Fungsi teras dan kes penggunaanJavaScript dan Web: Fungsi teras dan kes penggunaanApr 18, 2025 am 12:19 AM

    Penggunaan utama JavaScript dalam pembangunan web termasuk interaksi klien, pengesahan bentuk dan komunikasi tak segerak. 1) kemas kini kandungan dinamik dan interaksi pengguna melalui operasi DOM; 2) pengesahan pelanggan dijalankan sebelum pengguna mengemukakan data untuk meningkatkan pengalaman pengguna; 3) Komunikasi yang tidak bersesuaian dengan pelayan dicapai melalui teknologi Ajax.

    Memahami Enjin JavaScript: Butiran PelaksanaanMemahami Enjin JavaScript: Butiran PelaksanaanApr 17, 2025 am 12:05 AM

    Memahami bagaimana enjin JavaScript berfungsi secara dalaman adalah penting kepada pemaju kerana ia membantu menulis kod yang lebih cekap dan memahami kesesakan prestasi dan strategi pengoptimuman. 1) aliran kerja enjin termasuk tiga peringkat: parsing, penyusun dan pelaksanaan; 2) Semasa proses pelaksanaan, enjin akan melakukan pengoptimuman dinamik, seperti cache dalam talian dan kelas tersembunyi; 3) Amalan terbaik termasuk mengelakkan pembolehubah global, mengoptimumkan gelung, menggunakan const dan membiarkan, dan mengelakkan penggunaan penutupan yang berlebihan.

    See all articles

    Alat AI Hot

    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.

    Undress AI Tool

    Undress AI Tool

    Gambar buka pakaian secara percuma

    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

    mPDF

    mPDF

    mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

    VSCode Windows 64-bit Muat Turun

    VSCode Windows 64-bit Muat Turun

    Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

    Notepad++7.3.1

    Notepad++7.3.1

    Editor kod yang mudah digunakan dan percuma

    PhpStorm versi Mac

    PhpStorm versi Mac

    Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

    ZendStudio 13.5.1 Mac

    ZendStudio 13.5.1 Mac

    Persekitaran pembangunan bersepadu PHP yang berkuasa