Olası bir kullanım, bindActionCreators()
birden çok eylemi tek bir destek olarak birlikte "eşlemek" tir.
Normal bir gönderi şuna benzer:
Sahne alanlarına birkaç genel kullanıcı eylemini eşleyin.
const mapStateToProps = (state: IAppState) => {
return {
}
}
const mapDispatchToProps = (dispatch: Dispatch) => {
return {
userLogin: () => {
dispatch(login());
},
userEditEmail: () => {
dispatch(editEmail());
},
};
};
export default connect(mapStateToProps, mapDispatchToProps)(MyComponent);
Daha büyük projelerde, her gönderinin ayrı ayrı haritalanması işin zor gelebilir. Birbiriyle ilişkili bir dizi eylemimiz varsa, bu eylemleri birleştirebiliriz . Örneğin, kullanıcıyla ilgili her türlü farklı eylemi gerçekleştiren bir kullanıcı eylem dosyası. Her eylemi ayrı bir gönderi olarak çağırmak bindActionCreators()
yerine kullanabiliriz dispatch
.
BindActionCreators () kullanarak Birden Çok Gönderim
İlgili tüm eylemlerinizi içe aktarın. Redux mağazasında muhtemelen hepsi aynı dosyadadır.
import * as allUserActions from "./store/actions/user";
Ve şimdi dağıtımı kullanmak yerine bindActionCreators () kullanın
const mapDispatchToProps = (dispatch: Dispatch) => {
return {
...bindActionCreators(allUserActions, dispatch);
},
};
};
export default connect(mapStateToProps, mapDispatchToProps,
(stateProps, dispatchProps, ownProps) => {
return {
...stateProps,
userAction: dispatchProps
ownProps,
}
})(MyComponent);
Şimdi userAction
, bileşeninizdeki tüm eylemleri çağırmak için pervaneyi kullanabilirim .
IE:
userAction.login()
userAction.editEmail()
veya
this.props.userAction.login()
this.props.userAction.editEmail()
.
NOT: bindActionCreators () 'ı tek bir pervaneye eşlemeniz gerekmez. (Ek => {return {}}
o eşleştiren userAction
). bindActionCreators()
Tek bir dosyanın tüm eylemlerini ayrı sahne olarak eşlemek için de kullanabilirsiniz . Ama bunu yapmak kafa karıştırıcı olabilir. Her bir eylem veya "eylem grubuna" açık bir ad verilmesini tercih ederim. Ayrıca ownProps
bu "çocuk aksesuarlarının" ne olduğu veya nereden geldikleri hakkında daha açıklayıcı olmaları için isim vermek isterim . Redux + React'i kullanırken, tüm aksesuarların tedarik edildiği yerde biraz kafa karıştırıcı olabilir, bu nedenle ne kadar açıklayıcı olursa o kadar iyidir.
#3
bir kısaltmadır#1
?