Redux Reducers adalah fungsi tulen yang menentukan bagaimana perubahan keadaan aplikasi sebagai tindak balas kepada tindakan. Mereka adalah bahagian penting dalam seni bina Redux dan bertanggungjawab untuk menentukan peraturan untuk peralihan negeri.
Apabila tindakan dihantar dalam aplikasi Redux, ia diserahkan kepada pengurangan bersama dengan keadaan semasa. Reducer kemudian memproses tindakan dan mengembalikan objek negara baru. Objek negara baru ini mewakili keadaan aplikasi selepas tindakan telah digunakan. Yang penting, pengurangan tidak boleh bermutasi negeri yang sedia ada secara langsung; Sebaliknya, mereka harus mengembalikan objek negara baru.
Proses mengemas kini negara melibatkan langkah -langkah berikut:
Sebagai contoh, pengurangan mudah mungkin kelihatan seperti ini:
<code class="javascript">function counterReducer(state = { count: 0 }, action) { switch (action.type) { case 'INCREMENT': return { ...state, count: state.count 1 }; case 'DECREMENT': return { ...state, count: state.count - 1 }; default: return state; } }</code>
Dalam contoh ini, fungsi counterReducer
mengemas kini keadaan dengan menambah atau menurunkan count
berdasarkan jenis tindakan, dan ia mengembalikan objek negara baru tanpa mutasi keadaan asal.
Tujuan pengurangan di Redux adalah untuk mengurus dan mengemas kini keadaan aplikasi dengan cara yang boleh diramal dan terkawal. Reducers membantu mengekalkan integriti negara dengan memastikan bahawa perubahan kepada negara dibuat sebagai tindak balas kepada tindakan tertentu dan perubahan ini boleh diramalkan dan boleh dihasilkan.
Tujuan utama pengurangan termasuk:
Fungsi reducer dalam redux mengendalikan tindakan dengan menilai action.type
dan menggunakan logik yang sepadan untuk mengubah keadaan. Proses ini melibatkan langkah -langkah berikut:
action.type
yang menentukan jenis tindakan yang dihantar.switch
untuk mengendalikan jenis tindakan yang berbeza. Setiap case
dalam switch
sepadan dengan jenis tindakan tertentu.Berikut adalah contoh pengurangan yang mengendalikan tindakan yang berbeza:
<code class="javascript">function todoReducer(state = [], action) { switch (action.type) { case 'ADD_TODO': return [...state, { id: action.id, text: action.text, completed: false }]; case 'TOGGLE_TODO': return state.map(todo => todo.id === action.id ? { ...todo, completed: !todo.completed } : todo ); default: return state; } }</code>
Dalam contoh ini, fungsi todoReducer
mengendalikan dua jenis tindakan: ADD_TODO
dan TOGGLE_TODO
. Ia mengembalikan array negeri baru berdasarkan jenis tindakan dan keadaan semasa.
Di Redux, konsep mutasi negara merujuk kepada proses mengemas kini keadaan aplikasi. Walau bagaimanapun, Redux menguatkuasakan peraturan yang ketat bahawa negara tidak boleh bermutasi secara langsung. Sebaliknya, pengurangan harus mengembalikan objek negara baru untuk mencerminkan perubahan.
Proses mutasi negeri menggunakan redux reducers melibatkan langkah -langkah berikut:
action.type
untuk menentukan transformasi yang digunakan....
) atau kaedah array seperti map
, filter
, dan reduce
.Sebagai contoh, pertimbangkan pengurangan yang mengemas kini nama pengguna:
<code class="javascript">function userReducer(state = { name: 'John Doe' }, action) { switch (action.type) { case 'UPDATE_NAME': return { ...state, name: action.newName }; default: return state; } }</code>
Dalam contoh ini, userReducer
mencipta objek negara baru dengan nama yang dikemas kini, tanpa mengubah secara langsung keadaan yang sedia ada.
Dengan mematuhi prinsip -prinsip ini, Redux memastikan bahawa perubahan keadaan dapat diramalkan, dilacak, dan tidak menghasilkan kesan sampingan yang tidak dijangka, yang penting untuk mengekalkan aplikasi yang stabil dan debuggable.
Atas ialah kandungan terperinci Apa itu Redux Reducers? Bagaimana mereka mengemas kini negeri?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!