Redux, secara lalai, hanya menyokong aliran data segerak. Komponen kontena tidak boleh terus memanggil API tak segerak dan kemudian menghantar tindakan berdasarkan respons.
Isu dengan Panggilan API Langsung:
Dalam UI seperti yang diterangkan , dengan medan dan butang, komponen bekas akan cuba melakukan langkah berikut:
<pre class="brush:php;toolbar:false"> class App extends React.Component { render() { return ( <div> <input value={this.props.field} /> <button onClick={this.props.update}>Fetch</button> {this.props.isWaiting && <div>Waiting...</div>} </div> ); } update = () => { AsyncApi.getFieldValue() // Perform async API call .then(result => this.props.dispatch({ // Dispatch action with result type: ActionTypes.UPDATED, payload: result })); } }
Pendekatan ini bermasalah kerana:
Middleware to the Rescue:
Middleware seperti Redux Thunk atau Redux Promise menyelesaikan isu ini dengan menyediakan cara berstruktur dan konsisten untuk melaksanakan data tak segerak aliran.
Redux Thunk:
Redux Thunk membolehkan anda menghantar fungsi dan bukannya tindakan. Fungsi ini boleh melaksanakan tugas tak segerak dan menghantar tindakan mengikut keperluan.
Janji Redux:
Janji Redux menghantar tindakan secara automatik berdasarkan kejayaan atau kegagalan janji yang diberikan.
Kebaikan Middleware:
Kesimpulannya:
Walaupun pendekatan langsung kepada aliran tak segerak dalam Redux adalah mungkin, ia secara amnya tidak digalakkan disebabkan oleh kelemahan yang dinyatakan di atas. Middleware menyediakan penyelesaian yang lebih cekap dan berstruktur untuk mengurus aliran data tak segerak dalam aplikasi Redux, yang membawa kepada kualiti kod yang lebih baik, kebolehselenggaraan dan keupayaan penyahpepijatan.
Atas ialah kandungan terperinci Mengapa Menggunakan Middleware untuk Aliran Data Asynchronous dalam Redux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!