Mengakses Redux State Within Action Creators
Soalan:
Dalam aplikasi Redux, bagaimana bolehkah seseorang mengakses keadaan kedai global dari dalam pencipta tindakan? Adakah pendekatan berikut sesuai?
Pendekatan 1:
<code class="javascript">import store from '../store'; export const SOME_ACTION = 'SOME_ACTION'; export function someAction() { return { type: SOME_ACTION, items: store.getState().otherReducer.items, } }</code>
Pendekatan 2:
<code class="javascript">export const SOME_ACTION = 'SOME_ACTION'; export function someAction() { return (dispatch, getState) => { const {items} = getState().otherReducer; dispatch(anotherAction(items)); } }</code>
Jawapan:
Kebolehterimaan untuk mengakses keadaan dalam pencipta tindakan ialah topik perdebatan dalam komuniti Redux.
Pendekatan 1:
Mengakses keadaan secara terus melalui store.getState() tidak digalakkan kerana ia bergantung pada kedai sebagai singleton global. Pada pelayan, di mana kedai berasingan mungkin wujud setiap permintaan, pendekatan ini bermasalah.
Pendekatan 2:
Pendekatan ini lebih disukai kerana ia menggunakan perisian tengah Redux Thunk, yang membenarkan tindakan tak segerak dan mendapatkan semula keadaan kedai melalui getState(). Thunk berfungsi dengan lancar pada kedua-dua pelanggan dan pelayan serta memastikan akses keadaan diasingkan kepada tindakan tertentu.
Pertimbangan:
Akhirnya, kedua-dua pendekatan boleh membuahkan hasil yang diingini, tetapi Pendekatan 2 ialah amalan terbaik yang disyorkan untuk mengelakkan kemungkinan perangkap dan mengekalkan konsistensi merentas persekitaran.
Atas ialah kandungan terperinci Bagaimanakah Pencipta Tindakan Redux Perlu Mengakses Keadaan: Dari Kedai atau Thunk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!