Redux, perpustakaan pengurusan negeri untuk aplikasi JavaScript, terkenal kerana menyokong aliran data segerak. Walau bagaimanapun, untuk mengendalikan permintaan asynchronous, ia memerlukan penggunaan middleware seperti Redux Thunk atau Redux Promise.
Secara lalai, Redux beroperasi pada model aliran data segerak, bermakna ia mengharapkan pencipta tindakan untuk mengembalikan objek yang menerangkan perubahan kepada keadaan. Ini memastikan ketekalan dan kebolehramalan dalam kemas kini negeri. Walau bagaimanapun, apabila melakukan operasi tak segerak, seperti mengambil data daripada pelayan, menjadi tidak praktikal untuk mengembalikan hasil dengan segera.
Untuk memudahkan operasi tak segerak dalam Redux, middleware diperkenalkan . Middleware memintas tindakan yang dihantar ke kedai dan membolehkan pengendalian kesan sampingan, seperti membuat permintaan HTTP atau melakukan pengiraan yang mungkin mengambil masa. Dengan menggunakan middleware, pencipta tindakan boleh memulakan operasi tak segerak dan kemudian menghantar hasilnya sebagai tindakan kemudian.
Middleware menawarkan beberapa faedah dalam mengurus keadaan Redux secara tak segerak:
Pertimbangkan apl Redux mudah yang menyerupai kemas kini medan async menggunakan kelas AsyncApi:
const App = (props) => { const update = () => { dispatch({ type: 'STARTED_UPDATING', }); AsyncApi.getFieldValue() .then((result) => dispatch({ type: 'UPDATED', payload: result, })); }; // ... };
Walaupun pendekatan ini berfungsi secara teknikal, ia mengacaukan logik komponen dengan pengendalian async, menjadikannya kurang boleh diselenggara.
Dengan Redux Thunk atau Redux Promise middleware, kod yang sama boleh dipermudahkan:
const App = (props) => { const update = () => { dispatch(loadData(props.userId)); }; // ... }; const loadData = (userId) => (dispatch) => { fetch(`http://data.com/${userId}`) .then((res) => res.json()) .then( (data) => dispatch({ type: 'UPDATED', payload: data }), (err) => dispatch({ type: 'FAILURE', payload: err }), ); };
Dengan mengasingkan logik tak segerak kepada pencipta tindakan, komponen itu kekal tidak mengetahui sifat tak segerak operasi itu. Ia hanya menghantar tindakan, dan perisian tengah mengendalikan yang lain.
Walaupun secara teknikalnya mungkin, pengendalian operasi tak segerak tanpa perisian tengah dalam Redux tidak disyorkan. Ia memperkenalkan kerumitan dan overhed penyelenggaraan. Middleware menyediakan pendekatan piawai untuk mengurus kesan sampingan, menjadikan aliran data async dalam aplikasi Redux cekap, mudah dan boleh diuji.
Atas ialah kandungan terperinci Mengapa Menggunakan Middleware untuk Operasi Asynchronous dalam Redux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!