Salah satu kegunaan yang mungkin bindActionCreators()
adalah untuk "memetakan" banyak tindakan bersama-sama sebagai satu prop.
Pengiriman normal terlihat seperti ini:
Petakan beberapa tindakan pengguna yang umum ke properti.
const mapStateToProps = (state: IAppState) => {
return {
}
}
const mapDispatchToProps = (dispatch: Dispatch) => {
return {
userLogin: () => {
dispatch(login());
},
userEditEmail: () => {
dispatch(editEmail());
},
};
};
export default connect(mapStateToProps, mapDispatchToProps)(MyComponent);
Dalam proyek yang lebih besar, memetakan setiap pengiriman secara terpisah dapat terasa berat. Jika kami memiliki banyak tindakan yang terkait satu sama lain, kami dapat menggabungkan tindakan ini . Misalnya file tindakan pengguna yang melakukan semua jenis tindakan terkait pengguna yang berbeda. Alih-alih memanggil setiap tindakan sebagai dispatch terpisah kita dapat menggunakan bindActionCreators()
bukan dispatch
.
Beberapa Pengiriman menggunakan bindActionCreators ()
Impor semua tindakan terkait Anda. Semuanya mungkin ada di file yang sama di toko redux
import * as allUserActions from "./store/actions/user";
Dan sekarang alih-alih menggunakan pengiriman, gunakan bindActionCreators ()
const mapDispatchToProps = (dispatch: Dispatch) => {
return {
...bindActionCreators(allUserActions, dispatch);
},
};
};
export default connect(mapStateToProps, mapDispatchToProps,
(stateProps, dispatchProps, ownProps) => {
return {
...stateProps,
userAction: dispatchProps
ownProps,
}
})(MyComponent);
Sekarang saya dapat menggunakan prop userAction
untuk memanggil semua tindakan dalam komponen Anda.
YAITU:
userAction.login()
userAction.editEmail()
atau
this.props.userAction.login()
this.props.userAction.editEmail()
.
CATATAN: Anda tidak perlu memetakan bindActionCreators () ke satu prop. (Tambahan => {return {}}
yang memetakan ke userAction
). Anda juga dapat menggunakan bindActionCreators()
untuk memetakan semua tindakan dari satu file sebagai alat peraga terpisah. Tapi menurut saya, melakukan itu bisa membingungkan. Saya lebih suka setiap tindakan atau "kelompok tindakan" diberi nama yang jelas. Saya juga suka menamai the ownProps
agar lebih deskriptif tentang apa itu "alat peraga anak" ini atau dari mana asalnya. Saat menggunakan Redux + React, ini bisa menjadi sedikit membingungkan di mana semua properti disediakan sehingga semakin deskriptif semakin baik.
#3
merupakan singkatan dari opsi#1
?