Bagaimana cara menggunakan pengurangan dalam aplikasi satu - halaman?

Oct 30, 2025

Tinggalkan pesanan

Dalam bidang aplikasi tunggal (SPA), pengurangan memainkan peranan penting dalam menguruskan keadaan aplikasi dengan cara yang boleh diramal dan cekap. Sebagai pembekal pengurangan yang bereputasi, saya baik -baik saja dalam pelbagai jenis pengurangan dan bagaimana mereka dapat digunakan dengan berkesan dalam spa. Catatan blog ini bertujuan untuk memberikan panduan yang komprehensif mengenai cara menggunakan reducer dalam aplikasi satu - halaman.

Memahami asas -asas pengurangan

Sebelum menyelidiki pelaksanaan, penting untuk memahami apa yang pengurangan. Dalam konteks pengaturcaraan, pengurangan adalah fungsi tulen yang mengambil keadaan semasa dan tindakan sebagai input dan mengembalikan keadaan baru. Fungsi tulen adalah satu yang, diberi input yang sama, akan sentiasa menghasilkan output yang sama dan tidak mempunyai kesan sampingan.

Dalam spa, keadaan mewakili semua data yang perlu berfungsi. Ini termasuk maklumat pengguna, membentuk data, atau keadaan komponen yang berbeza. Tindakan, sebaliknya, adalah objek JavaScript biasa yang menggambarkan apa yang berlaku dalam permohonan itu. Mereka biasanya mempunyaiJenisharta yang menunjukkan jenis tindakan dan pilihanmuatanharta yang mengandungi data tambahan.

Sebagai contoh, pertimbangkan aplikasi kaunter mudah. Negeri boleh menjadi integer yang mewakili kiraan semasa. Tindakan untuk meningkatkan kiraan boleh menjadi objek seperti{jenis: 'kenaikan', muatan: 1}. Reducer untuk permohonan ini akan kelihatan seperti ini:

fungsi counterReducer (state = 0, action) {switch (action.type) {case 'increment': return state + action.payload; Lalai: Kembali keadaan; }}

Mengapa Gunakan Reducers dalam Aplikasi Single - Halaman

Terdapat beberapa sebab mengapa pengurangan bermanfaat dalam spa:

  1. Kebolehprediksi: Oleh kerana pengurangan adalah fungsi tulen, keadaan baru boleh diramalkan berdasarkan keadaan semasa dan tindakan. Ini menjadikan debug dan ujian lebih mudah.
  2. Pengurusan negeri berpusat: Pengurangan membolehkan anda menguruskan keadaan aplikasi di satu tempat. Ini menjadikannya lebih mudah untuk memahami aliran data dan bagaimana bahagian -bahagian aplikasi yang berlainan berinteraksi dengan keadaan.
  3. Masa - Debugging Perjalanan: Dengan sistem pengurusan negeri yang berpusat di reducer, mungkin untuk melaksanakan masa - debugging perjalanan. Ini bermakna anda boleh berulang -ulang dalam sejarah negara aplikasi, yang sangat berguna untuk mencari bug.

Melaksanakan pengurangan dalam aplikasi satu halaman

Sekarang kita memahami asas -asas pengurangan dan mengapa mereka berguna, mari kita lihat bagaimana untuk melaksanakan pengurangan di spa.

Langkah 1: Tentukan keadaan awal

Langkah pertama adalah untuk menentukan keadaan awal permohonan. Inilah keadaan bahawa aplikasi bermula dengan. Sebagai contoh, dalam permohonan senarai A hingga - lakukan, keadaan awal boleh menjadi array kosong yang mewakili senarai tugas.

const initialState = {Tasks: []};

Langkah 2: Tentukan fungsi reducer

Seterusnya, kita perlu menentukan fungsi reducer. Fungsi ini akan mengendalikan semua tindakan yang boleh berlaku dalam aplikasi dan mengemas kini keadaan dengan sewajarnya.

fungsi todoreducer (state = initialState, action) {switch (action.type) {case 'add_task': return {... state, tasks: [... state.tasks, action.payload]}; kes 'rove_task': kembali {... state, tugas: state.tasks.filter (task => task.id! == action.payload)}; Lalai: Kembali keadaan; }}

Langkah 3: Mengintegrasikan pengurangan dengan aplikasi

Sebaik sahaja reducer ditakrifkan, kita perlu mengintegrasikannya dengan spa. Dalam kerangka JavaScript yang paling moden seperti React, ini biasanya dilakukan menggunakan perpustakaan pengurusan negeri seperti Redux.

Berikut adalah contoh cara menggunakanTodoreducerdengan Redux dalam aplikasi React:

import {createStore} dari'redux '; import todoreducer dari './todoreducer'; // Buat kedai redux const store = createStore (todoreducer); // melanggan untuk menyimpan perubahan store.subscribe (() => {console.log ('new state:', store.getState ());}); // penghantaran kedai Action.dispatch ({type: 'add_task', muatan: {id: 1, teks: 'membeli barangan runcit'}});

Jenis pengurangan dan aplikasi mereka dalam spa

Sebagai pembekal reducer, kami menawarkan pelbagai pengurangan, masing -masing dengan ciri -ciri dan aplikasi tersendiri dalam spa.

Reducer kimpalan eksentrik

TheReducer kimpalan eksentrikadalah sejenis pengurangan yang biasa digunakan dalam aplikasi di mana penjajaran paip adalah penting. Di spa, ini boleh sama dengan keadaan di mana anda perlu menguruskan negeri dengan cara yang menyumbang kepada penjajaran atau offset yang berbeza. Sebagai contoh, dalam aplikasi grafik, anda mungkin menggunakan pendekatan pengurangan kimpalan eksentrik seperti untuk menguruskan kedudukan elemen pada skrin.

Buttweld Reducer Concentric

TheButtweld Reducer Concentricadalah satu lagi jenis reducer yang digunakan apabila paip perlu berpusat. Dalam spa, ini boleh digunakan dalam senario di mana anda perlu menguruskan negeri dengan cara yang berpusat dan simetri. Sebagai contoh, dalam aplikasi multi - pengguna, anda mungkin menggunakan pendekatan pengurangan kimpalan pantat - seperti pendekatan untuk memastikan semua pengguna melihat keadaan yang sama.

Teknik pengurangan lanjutan

Menggabungkan pengurangan

Dalam aplikasi yang lebih besar, sering diperlukan untuk memecahkan pengurangan ke dalam pengurangan yang lebih kecil dan lebih mudah diurus. Di sinilah konsep menggabungkan pengurangan masuk. Redux menyediakanCombinereducersFungsi yang membolehkan anda menggabungkan pelbagai pengurangan ke dalam satu.

import {combinereducers} dari'redux '; pengarang import dari './counterreducer'; import todoreducer dari './todoreducer'; const rootReducer = combinereducers ({counter: counterReducer, todo: todoreducer});

Tindakan Asynchronous

Dalam banyak spa, anda perlu melakukan operasi tak segerak seperti mengambil data dari API. Untuk mengendalikan tindakan asynchronous, anda boleh menggunakan middleware seperti Redux Thunk atau Redux Saga.

Redux Thunk membolehkan anda menulis pencipta tindakan yang mengembalikan fungsi dan bukannya objek biasa. Fungsi -fungsi ini boleh melaksanakan operasi tak segerak dan kemudian menghantar tindakan apabila operasi selesai.

import {CreateStore, ApplyMiddleWare} dari'Redux '; import thunk from'redux-thunk '; import rootreducer dari './rootreducer'; const store = createStore (rootReducer, applyMidDleWare (thunk)); fungsi fetchData () {return async (Dispatch) => {Dispatch ({type: 'fetch_data_request'}); cuba {const response = menunggu ambil ('https://api.example.com/data'); const data = menunggu tindak balas.json (); penghantaran ({type: 'fetch_data_success', muatan: data}); } tangkapan (error) {Dispatch ({type: 'fetch_data_failure', muatan: error.message}); }}; } store.disPatch (fetchData ());

Kesimpulan

Reducers adalah alat yang berkuasa untuk menguruskan negeri dalam aplikasi tunggal. Mereka menyediakan ramalan, pengurusan negeri berpusat, dan keupayaan untuk melaksanakan debugging perjalanan masa. Dengan memahami asas -asas pengurangan, bagaimana untuk melaksanakannya, dan pelbagai jenis pengurangan yang ada, anda boleh membina spa yang lebih mantap dan boleh dipelihara.

Eccentric Weld ReducerButtweld Concentric Reducer

Sekiranya anda berminat untuk mempelajari lebih lanjut mengenai pengurangan yang kami tawarkan atau jika anda mempunyai sebarang pertanyaan mengenai penggunaan reducers dalam aplikasi halaman tunggal anda, kami menggalakkan andaHubungi kami. Pasukan pakar kami bersedia membantu anda dalam mencari pengurangan yang tepat untuk keperluan anda dan membimbing anda melalui proses pelaksanaan.

Rujukan

  • Dokumentasi Redux
  • React Documentation
  • Dokumentasi Perpustakaan Standard JavaScript
Hantar pertanyaan